程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 簡略講授奇偶排序算法及在Java數組中的完成

簡略講授奇偶排序算法及在Java數組中的完成

編輯:關於JAVA

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved