簡略講授奇偶排序算法及在Java數組中的完成。本站提示廣大學習愛好者:(簡略講授奇偶排序算法及在Java數組中的完成)文章只能為提供參考,不一定能成為您想要的結果。以下是簡略講授奇偶排序算法及在Java數組中的完成正文
奇偶排序是一個比擬有特性的排序,根本思緒是奇數列排一趟序,偶數列排一趟序,再奇數排,再偶數排,直到全體有序
舉例吧,
待排數組
[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]
Java完成:
static void oddEvensort(int[] ary) {
//奇偶排序
boolean flag = true;
while (flag) {
boolean odd = false, even = false;
for (int i = 0; i < ary.length - 1; i+=2) {
if (ary[i] > ary[i + 1]) {
ary[i] = ary[i + 1] + 0 * (ary[i + 1] = ary[i]);
odd = true;
}
}
for (int i = 1; i < ary.length - 1; i+=2) {
if (ary[i] > ary[i + 1]) {
ary[i] = ary[i + 1] + 0 * (ary[i + 1] = ary[i]);
even = true;
}
}
flag = odd || even; //若為false,表現豈論奇偶序列,一個相符前提的比擬都沒有
}
}
下面的 flag = odd || even; 有一個為true,表現還在交流, 那末最初只要 都為 false時,flag才為false。
改寫成 flag = odd && even; 有一個為false,則不再全體輪回了。跟冒泡排序一樣,可以削減最初一次內層輪回。