簡略講授奇偶排序算法及在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,則不再全體輪回了。跟冒泡排序一樣,可以削減最初一次內層輪回。