奇偶数排序算法讲解

算法看多了也脑袋疼,这不,奇偶算法,这名字怪怪的,也不知道哪位大神想出来的这个算法

看名字大概也知道,排序跟奇偶位数有关,嗯,你猜到了重点

奇偶排序是这样的,先奇数位和它右侧的数据进行排序,然后偶数位和它右侧的数据进行排序,从而得到最终结果

我们来举个例子,有数组[10, 12, 7, 5]

先选偶位还是先选奇位,看你的代码了

①我们选择偶数位  10  7

10和它右边的12比,嗯,是顺序的,所以保持不变

7和它右边的5比,7比5大,互换顺序,结果为[10, 12, 5, 7]

 

②我们选择奇数位 12  7

12和它右边的5比,12比5大,互换顺序,结果为[10, 5, 12, 7]

因为7右边没有数据,不进行比较排序

 

③我们选择偶数位 10  12

10和它右边的5比,10比5大,互换顺序,结果是[5, 10, 12, 7]

12和它右边的7比,12比7大,互换顺序,结果是[5, 10, 7, 12]

 

④我们选择奇数位 10 12

10和它右边的7比,10比7大,互换顺序,结果是[5, 7, 10, 12]

因为12右边没有数据,不进行比较排序

 

⑤我们选择偶数位  5 10

………………

…………

……

直至每个都确认一遍之后,之后结果为

[5, 7, 10, 12]

(排序次数和结果如下

[10, 12, 7, 5]
[10, 12, 5, 7]
[10, 5, 12, 7]
[5, 10, 12, 7]
[5, 10, 7, 12]
[5, 7, 10, 12]
[5, 7, 10, 12]
[5, 7, 10, 12]
[5, 7, 10, 12])

我们再来看看代码实现

java代码实现奇偶排序

python代码实现奇偶排序

go代码实现奇偶排序

 

 

你可能感兴趣的:(算法与数据结构,算法和数据结构)