mathematica 发表于 2011-2-19 08:51:34

一个整数构成的向量,如何做到奇数按照降序排列偶数按照升序排列?

如Example input: (1,4,5,2,3,6,7)
Output: (7,5,3,1,2,4,6)

问题来源:
http://stackoverflow.com/questions/2890525/sorting-odd-in-descending-and-even-in-ascending-order

链接里面有答案,但是不是用mathematica等数学软件写的,
不要写看答案,要先写,再看答案

各显神通吧!

mathematica 发表于 2011-2-19 09:06:23

Clear["Global`*"];(*Clear all variables*)
a=RandomInteger[{1,20},10](*需要被排序的向量*)
jishu=Sort,#1>#2&] (*选出奇数降序排列*)
oushu=Sort,#1<#2&] (*选出偶数升序排列*)
asort1={jishu,oushu}    (*求解结果,第一种表现形式*)
asort2=Flatten(*求解结果,第二种表现形式*)

mathematica 发表于 2011-2-19 09:08:13

图形式

mathematica 发表于 2011-2-19 09:15:13

这个太简单了,改一下,换一下要求,要求排序后,
奇数只能在原来的奇数的位置上,
偶数只能在原来的偶数的位置上!

比如{2,1,5,6,3,4}
结果是{2,5,3,4,1,6},
原来的第1\4\6位是偶数,排序后,仍然是偶数,按照升序排序
原来的第2\3\5位是奇数,排序后,仍然是奇数,按照降序排序

这下子提高了问题的难度,刚才的那个实在是没什么难度!

mathematica 发表于 2011-2-19 09:32:20

这个问题用excel和matlab还真不难,但是我还真的不会用mathematica做!

G-Spider 发表于 2011-2-19 09:49:25

#4   加奇偶判断,冒泡法,快速排序是可以的。
页: [1]
查看完整版本: 一个整数构成的向量,如何做到奇数按照降序排列偶数按照升序排列?