2016年(9)
分类: C/C++
2016-12-24 17:34:13
转帖:http://blog.csdn.net/benjamin_whx/article/details/42456755
经典排序算法 - 奇偶排序Odd-even sort
又一个比较性质的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序
举例吧,
待排数组[6 2 4 1 5 9]
第一次比较奇数列,奇数列与它的邻居偶数列比较,如6和2比,4和1比,5和9比
[6 2 4 1 5 9]
交换后变成
[2 6 1 4 5 9]
第二次比较偶数列,即6和1比,5和5比
[2 6 1 4 5 9]
交换后变成
[2 1 6 4 5 9]
第三趟又是奇数列,选择的是2,6,5分别与它们的邻居列比较
[2 1 6 4 5 9]
交换后
[1 2 4 6 5 9]
第四趟偶数列
[1 2 4 6 5 9]
一次交换
[1 2 4 5 6 9]
最差时间复杂度 O(N?) |
|
public static void batcherSort(int[] array) {
int length = array.length ;
boolean flag = true ;
while(true) {
flag = true ;
for(int i=1;i
if(array[i] > array[i+1]) {
swap(array, i, i+1) ;
flag = false ;
}
}
for(int i=0;i
if(array[i] > array[i+1]) {
swap(array, i, i+1) ;
flag = false ;
}
}
if(flag) break ;
printArr(array) ;
}
}