歸併排序(java實現)

2021-09-02 02:06:14 字數 1239 閱讀 1837

分治(divide-and-conquer)策略(分治法將問題(divide)成一些小的問題然後遞迴求解,而治(conquer)的階段則將分的階段得到的各答案"修補"在一起,即分而治之)。

(需要乙個大小為n的臨時儲存空間用以儲存合併序列)

參考文章及其**展示鏈結:【點我】

(log2n為以2為底,n的對數)

排序型別

時間複雜度(平均)

時間複雜度(最壞)

時間複雜度(最好)

空間複雜度

穩定性複雜性

交換排序

o(nlog2n)

o(nlog2n)

o(nlog2n)

o(n)

穩定較複雜

/**

* 用於將陣列的兩邊和右邊排序成乙個完整的排好序的陣列

* @param inputlist 陣列

* @param left 陣列的左邊邊界

* @param mid 陣列的中間

* @param right 陣列的右邊邊界

* @param tem 臨時陣列

*/public static void merge(int inputlist, int left, int mid, int right, int tem) else

} while (i <= mid)

while (j <= right)

k = 0;

while (left <= right)

}/**

* 歸併演算法

* @param inputlist 陣列

* @param left 陣列的左邊界

* @param right 陣列的右邊界

* @param tem 臨時陣列

*/public static void mergesort(int inputlist, int left, int right, int tem)

}public static void main(string args) ;

int b = new int[a.length];

mergesort(a, 0, a.length - 1, b);

print(a);//自定義的輸出陣列方式

}

歸併排序 Java實現

歸併排序 mergesort 1 思想 多次將兩個或兩個以上的有序表合併成乙個新的有序表。2 演算法時間複雜度 最好的情況下 一趟歸併需要n次,總共需要logn次,因此為o n logn 最壞的情況下,接近於平均情況下,為o n logn 說明 對長度為n的檔案,需進行logn 趟二路歸併,每趟歸併...

Java實現歸併排序

剛開始接觸歸併排序的時候,感覺挺困難的,但是仔細的分析之後,就會發現它的原理還是蠻簡單的 就是借助另外的乙個陣列空間將左右兩側 從中間mid處劃分 已經排序好的原陣列轉到新的陣列空間。如下圖所示 轉移操作時,就是左右所指的資料進行比較,將較小的資料 由小到大排序 儲存到新的陣列空間。如下圖所示 了解...

Java實現歸併排序

思想就是 將陣列分成兩個陣列,如果兩個陣列的元素都是有序的,那麼就可以很方便的將這兩組資料歸併。如果沒有序繼續將兩組陣列分組,以此類推,當組內只有乙個資料時,認為這個小組內已經有序,然後合併相鄰兩個小組就可以。package sort 歸併排序 2015 05 31 public class mer...