歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。歸併排序是一種穩定的排序方法。歸併排序的核心思想是排序乙個陣列,我們先把陣列從中間分成前後兩部分,然後對前後兩部分分別排序,再將排好序的兩部分合併在一起,就是分而治之思想,分治演算法一般都是用遞迴來實現的。
時間複雜度都是o(nlogn) 空間複雜度是o(n)。
public class mergesort
int mid = array.length/2;
int left =arrays.copyofrange(array,0,mid);
int right=arrays.copyofrange(array,mid,array.length);
return merge(mergesort(left), mergesort(right));
}/**
* 將兩段排序好的陣列結合成乙個排序陣列,需要注意的時2個陣列的邊界值判斷,這是重點
* @param left
* @param right
* @return
*/public static int merge(int left,int right)else if(j>=right.length)else if(left[i]>right[j])else
}return result;
}public static void main(string args) ;
array = mergesort(array);
system.out.println(arrays.tostring(array));
}}
排序演算法之歸併排序
歸併排序也是經典的使用分治法思想的代表演算法之一。歸併排序的效率很高,而且是一種穩定的排序。其總體的思想思路就是將待排序的元素分成大致相同的兩個子集合,分別對兩個子集合進行排序,最終將排序的子集合合併成排好序的總集合 歸併排序c 實現如下 include void mergesort int arr...
排序演算法之歸併排序
歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用,歸併排序將兩個已排序的表合併成乙個表。歸併排序基本原理 通過對若干個有序結點序列的歸併來實現排序。所謂歸併是指將若干個已排好序的部分合併成乙個有序的部分。歸併排序基本思...
排序演算法之歸併排序
歸併排序,和快排一樣同樣採用了分治的思想,將兩個 或以上 有序表合併成乙個新的有序表。歸併排序步驟如下 把n個記錄看成 n個長度為 1 的有序子表 進行兩兩歸併使記錄關鍵字有序,得到 n 2 個長度為 2 的有序子表 重複第2步直到所有記錄歸併成乙個長度為n的有序表為止。下面是歸併排序演算法的遞迴實...