歸併排序:是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使
子串行段間有序。
1)遞迴方法
//有兩個重要的特點,可以適用於外部排序(資料在磁碟上),也可以適用於鍊錶排序
// (希爾,堆排序,快速排序依賴隨機訪問能力,都不適合鍊錶排序)
//[low,mid) 有序區間
//[mid,high) 有序區間
//兩個區間進行合併
public
static
void
merge
(int
array,
int low,
int mid,
int high)
else
}//當以上迴圈結束的時候,肯定有乙個cur到達末尾,另乙個還剩下一些內容
//把剩餘的內容老被到output中
while
(cur1 < mid)
while
(cur2 < high)
//把output的元素搬運到原來的陣列
for(
int i =
0; i < high - low; i++)}
public
static
void
mergesort
(int
array)
//[low,high)前閉後開區間
private
static
void
mergesorthelper
(int
array,
int low,
int high)
int mid =
(low + high)/2
;mergesorthelper
(array,low,mid)
;mergesorthelper
(array,mid,high)
;//當我們把左右區間歸併排序完了,說明左右區間已經是有序區間了
merge
(array,low,mid,high)
;}
2)非遞迴方法
public
static
void
mergrsortbyloop
(int
array)
if(end > array.length)
merge
(array,beg,mid,end);}
}}
時間複雜度:o(n * log(n))
空間複雜度:
o(n)
穩定性:
穩定排序
歸併排序詳細解析
我們先來乙個兩個有序的陣列a和b進行排序的 兩個有序的陣列進行排序只需每次選擇兩個陣列中最小的那個數放進c中就ok了,之後如果那個陣列還有剩餘就將其直接接在c後面。時間效率還是很快的達到了o n python原始碼 def memeryarray a,b,c i 0 j 0 k 0 n len a ...
5 歸併排序(詳細)
目錄 sort類在選擇排序中的約定中 歸併排序的思想是將陣列分成兩部分,分別進行排序,然後歸併起來。歸併方法將陣列中兩個已經排序的部分歸併成乙個。算是乙個輔助方法把,下面不管哪種歸併排序都會用到 public abstract class mergesort comparable extends s...
歸併排序 詳細解釋版
歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個有序的子串行,再把有序的子串行合併為整體有序序列。假設待排序的序列 4 3 79 2 8 6先說思路,歸併排序的中心思想是將兩個已經排序好的序列,合併成乙個排序的序列。上面的序列可以分成 4 3 79 ...