基本思路:
歸併排序(merge-sort)是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。
//歸併排序遞迴體,把整個序列遞迴分為兩個長度為1的子串行,然後對其子序列進行比較歸併。得到有序子串行
public
static
void
mergesort
(int
array,
int left,
int right)
/**
* 將切分的陣列進行歸併排序
* @param array 待排序陣列
* @param left 左邊陣列第乙個元素索引
* @param mid 左邊陣列最後乙個元素索引,mid為右邊陣列第乙個元素索引
* @param right 右邊陣列最後乙個元素索引
*/public
static
void
merge
(int
array,
int left,
int mid,
int right)
else
}//處理完,剩餘元素放進去。
while
(i < mid)
while
(j < right)
//從臨時陣列搬運到原陣列
for(
int t =
0;t < right - left;t++
)}
測試**://歸併排序非遞迴實現
public
static
void
mergesort2
(int
array)
}}
public
static
void
main
(string[
] args)
;//insertsort(array);
//shellsort(array);
//selectsort(array);
//heapsort(array);
//bubblesort(array);
//quicksort2(array);
mergesort2
(array)
; system.out.
println
(arrays.
tostring
(array));
}}
附:常用排序演算法總結[2,
3,5,
6,7,
8,9]

歸併排序 遞迴與非遞迴實現
歸併排序 採用的是一種分而治之的思想.過程 將乙個陣列進行二分,直到有每組有乙個元素為止.然後進行合併元素,按照一定的順序進行排序.實現 遞迴實現 void merge int arr,int left,int mid,int right,int tmp int start left int end...
歸併排序(遞迴與非遞迴)
1.遞迴 把序列分成元素個數盡量相等的兩部分,再將兩半分別排序,合併有序的兩個序列 遞迴 void merge sort int a,int low,int heigh,int t a為待排序陣列,low,high分別為a的上下限 0 n 1 t為輔助陣列 for i low,j 0 i heigh...
歸併排序(遞迴與非遞迴)的實現
摘要 1 歸併排序幾乎以o nlogn 的時間界實現,是典型的分治演算法 2 歸併排序的基本思路很簡單 就是將目標序列分為兩個部分,將兩個子串行排序好之後,再將它們合併。注意到合併兩個已排序的序列只需要o n 的時間界。3 對兩個子串行的排序顯然也是通過遞迴的歸併排序實現的。4 需要注意的乙個小細節...