排序演算法 歸併排序 java實現

2021-07-11 12:07:42 字數 1079 閱讀 9064

歸併排序指的是將兩個已經排序的序列合併成乙個序列的操作。主要分為兩種,分別是自頂向下的排序方式和自底向上的排序方式。

對於自頂向下的排序演算法:

採用分治法進行自頂向下的程式設計方式,分治法的核心思想就是分解、求解、合併

(1)將長度為n的無序序列平均分割成兩個子串行

(2)對這兩個子串行分別進行歸併排序

(3)將排序好的兩個子串行進行歸併排序

對於自底向上的排序演算法:

第1 趟歸併排序,將這含有n個元素的無序序列看成n個長度為1 的有序序列,兩兩歸併。如果是偶數個子序列,則得到長度為n/2 的子串行;如果是奇數個,則最後乙個輪空,得到(n-1)/2 +1 個子序列

第2趟歸併排序,第1趟歸併所得到的有序的子串行兩兩歸併。

如此反覆,直至得到乙個長度為n的有序序列為止。

時間複雜度:o(nlog2n)

空間複雜度 : o(n)

穩定性:穩定

3.1自頂向下:

//歸併排序	自頂向下

public static void merge(int array,int start ,int mid,int end)

}

3.2自底向上:

//自底向上

public static void mergegroup(int array,int len, int sub_len)

//進行最後一次歸併

if (i == 0) merge(array,i,i+sub_len-1,len-1); }

public static void mergesort2(int array)

}

歸併排序演算法(Java實現)

求解 遞迴地對兩個子區間a low mid 和 a mid 1 high 進行歸併排序。遞迴的終結條件是子區間長度為1。合併 將已排序的兩個子區間a low mid 和 a mid 1 high 歸併為乙個有序的區間a low high comment 歸併排序演算法 author ron date...

java排序演算法 歸併排序

歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divideand conquer 的乙個非常典型的應用。在討論歸併排序演算法之前,先來看乙個小問題,對於兩個有序陣列,如何合併成乙個有序陣列問題。public static voidmerge intaa,intbb else...

排序演算法 歸併排序 (java)

歸併排序,顧名思義,就是將資料進行合併,我們首先將待排陣列分成兩個子串行,然後在對其單個序列進行排序,不斷遞迴到只有兩個元素的子串行,然後再向上返回,最中得到的是兩個有序的子串行,最後我們通過乙個輔助陣列,遍歷這兩個陣列,挑選出較小的元素將其放在輔助陣列中,這樣我們就會在輔助陣列中將數排好序了,然後...