1. 程式人生 > >並歸排序(看別人的看不懂,自己寫了一個),排序思想是一樣的

並歸排序(看別人的看不懂,自己寫了一個),排序思想是一樣的


public int[] intArray = {8,5,10,55,88,22,14,36,82,54,10,74,22}; @RequestMapping(value="hello") public int[] getHello(int[] intArray1) { //獲取最新排序 intArray1 = intArray; //計算排好序的元素個數,如果次數為陣列長度,說明排序成功 int count = 0; int index0 = 0; int indexlast = intArray1.length;
for(int i=0; i< indexlast-1; i++){ int start = intArray1[index0]; int next = intArray1[index0+1]; if(start <= next){ count++; index0++; }else{ //前後兩元素互換 intArray1[index0] = next; intArray1[index0
+1] = start; index0++; } } //把排序結果賦值給引數 ,排序成功則當做結果輸出 intArray = intArray1; //如果目前的排好序的元素個數不等於陣列長度,繼續排序 if(count != indexlast-1){ getHello(intArray); } return intArray; }

 

歸併排序的基本思想

將待排序序列R[0...n-1]看成是n個長度為1的有序序列,將相鄰的有序表成對歸併,得到n/2個長度為2的有序表;將這些有序序列再次歸併,得到n/4個長度為4的有序序列;如此反覆進行下去,最後得到一個長度為n的有序序列。

綜上可知:

歸併排序其實要做兩件事:

(1)“分解”——將序列每次折半劃分

(2)“合併”——將劃分後的序列段兩兩合併後排序