国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

簡單講解奇偶排序算法及在Java數組中的實現

2019-11-26 14:26:03
字體:
來源:轉載
供稿:網友

奇偶排序是一個比較有個性的排序,基本思路是奇數列排一趟序,偶數列排一趟序,再奇數排,再偶數排,直到全部有序

舉例吧,

待排數組

[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,則不再整體循環了。跟冒泡排序一樣,可以減少最后一次內層循環。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泗水县| 大关县| 高州市| 昔阳县| 呼图壁县| 岳阳市| 甘谷县| 平乐县| 余姚市| 逊克县| 乌拉特前旗| 黎城县| 金门县| 嵊泗县| 含山县| 凌源市| 桂林市| 北辰区| 龙陵县| 香河县| 利津县| 富宁县| 巴彦淖尔市| 嘉兴市| 东台市| 汶上县| 红安县| 宣威市| 广州市| 乐陵市| 淮南市| 抚顺市| 城市| 尼玛县| 绥化市| 文登市| 上虞市| 宿迁市| 诏安县| 应用必备| 铁岭县|