歸併排序(merge-sort)是利用歸併的思想實現的排序方法,該演算法採用經典的分治(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然後遞迴求解,而治(conquer)的階段則將分的階段得到的各答案"修補"在一起,即分而治之)。
網上一張圖
可以看到這種結構很像一棵完全二叉樹,本文的歸併排序我們採用遞迴去實現(也可採用迭代的方式去實現)。分階段可以理解為
可以看到這種結構很像一棵完全二叉樹,本文的歸併排序我們採用遞迴去實現(也可採用迭代的方式去實現)。分階段可以理解為就是遞迴拆分子序列的過程,遞迴深度為log2n。
總的平均時間複雜度為o(nlogn)。而且,歸併排序的最好,最壞,平均時間複雜度均為o(nlogn)。而且歸併排序是乙個穩定的排序
**
public class mergesort ;
static int b=new int[100];
public static void show(int a,int b){
if(a輸出結果
4 8
5 7
4 5 7 8
1 3
2 6
1 2 3 6
1 2 3 4 5 6 7 8 12
3456
78
歸併排序及其分析
歸併排序演算法實現 private static void mergesort anytype a,anytype tmparray,int left,int right if leftint center left right 2 mergesort a,tmparray,left,center ...
歸併排序演算法分析
利用分治的思想,每一次把原陣列分為兩份,再進行對子陣列進行排序,最後對排好序的陣列進行合併,形成乙個新的有序序列。求中點 l到mid之間變為有序的 mergesort arr,l,mid mid 1到r之間變成有序的 mergesort arr,mid 1,r merge arr,l,mid,r p...
排序演算法 歸併排序流程分析
歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列 即先使 每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為 2 路歸併,與之對應的還有多路歸 並。對於給定的一組資料,利用遞迴與分治技術將資料...