java歸併排序詳解

2021-07-25 14:31:59 字數 1176 閱讀 4134

/** 

* 歸併排序 

* 簡介:將兩個(或兩個以上)有序表合併成乙個新的有序表 即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列 

* 時間複雜度為o(nlogn) 

* 穩定排序方式 

* @param nums 待排序陣列 

* @return 輸出有序陣列 

*/

public class mergesort ;

new mergesort().sort(a, 0, a.length - 1);

system.out.println(arrays.tostring(a)); }

public void sort(int a, int left, int right) }

public void merge(int arr, int left, int mid, int right)

for (i = 0; i < n2; i++)

i = 0;

while (i < n1 && j < n2) else }

while (i < n1)

while (j < n2)

for (i = 0; i < c.length; i++) }

}:合併有序數列時分配臨時陣列,但是過多的new操作會非常費時。因此作了下小小的變化。只在mergesort()中new乙個臨時陣列。後面的操作都共用這乙個臨時陣列。

執行結果測試:

[0, 3, 6, 2, 4, 9, 7, 5, 8, 1]

[0, 3, 6, 2, 4, 9, 7, 5, 8, 1]

[0, 3, 6, 2, 4, 9, 7, 5, 8, 1]

[0, 3, 6, 2, 4, 9, 7, 5, 8, 1]

[0, 2, 3, 4, 6, 9, 7, 5, 8, 1]

[0, 2, 3, 4, 6, 7, 9, 5, 8, 1]

[0, 2, 3, 4, 6, 5, 7, 9, 8, 1]

[0, 2, 3, 4, 6, 5, 7, 9, 1, 8]

[0, 2, 3, 4, 6, 1, 5, 7, 8, 9]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

歸併排序(java)

基本排序 歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。public class mergingsort return data 將陣列中left center,center 1 r...

Java 歸併排序

歸併排序 英語 merge sort 或mergesort 是建立在歸併操作上的一種有效的 排序演算法 時間複雜度為 o n log n 穩定排序。1945年由 約翰 馮 諾伊曼 首次提出。該演算法是採用 分治法 divide and conquer 的乙個非常典型的應用,且各層分治遞迴可以同時進行...

JAVA 歸併排序

歸併排序演算法思想 將乙個無序陣列分成兩部分,然後各個部分繼續分解,遞迴呼叫,直至子陣列天然有序 只有乙個數就是天然有序 然後自底向上,將每個子陣列一一合併,然後最後就合併成乙個有序的陣列。遞迴方法,分解無序陣列 遞迴呼叫該方法進行陣列的排序 param arr1 return public sta...