常用演算法值歸併排序

2021-09-07 18:41:50 字數 1271 閱讀 2124

1、演算法思想

將資料集合兩分拆開

迴圈拆分至每組只剩乙個為止

將拆分的陣列進行排序組合

兩兩合併,直至合併成乙個陣列即排序完成

2、**示例

package

com.tianxiapai.admin.inte***ces.commons;

public

class

demo ;

/*** 歸併排序:將資料集合兩分拆開,直至最小之後兩兩排序合併

*/private

static

void

mergesort()

/*** 查分陣列,如果陣列不能拆分了,則直接返回,拆分之後合併

*/private

static

void mergesort(int temp, int start, int

end)

int mid = (start + end) / 2;

mergesort(temp, start, mid);

mergesort(temp, mid + 1, end);

mergearray(temp, start, mid + 1, end);

}/*** 將陣列array,以mid為中心,前後兩個陣列進行合併

*/private

static

void mergearray(int temp, int start, int mid, int

end)

else

} else

else}}

system.arraycopy(temp, start, array, start, end - start + 1);

for (int i=0;i)

system.out.println("");

}public

static

void

main(string args)

system.out.println("");

mergesort();

system.out.println("");

for (int i=0;i) }}

執行結果:

3.時間複雜度

常用排序演算法 歸併排序

歸併排序 基本思想 先把陣列拆分,直到分成都只含有乙個元素的陣列,這樣兩兩合併,逐漸就可以得到已排序的字陣列,繼續合併直到合併成原來陣列長度為止。時間複雜度 o nlogn 空間複雜度 o nlogn 每一輪合併都需要n空間,共需要logn輪 第一輪是1 n 需要n個陣列,每個陣列長度為1 第二輪是...

常用排序演算法 歸併排序

確定分界點 mid l r 2 取中間數,分成 l,mid 和 mid,r 兩個區域。將l l,mid 和 mid,r 兩個區域進行遞迴排序。歸併 將左右兩個有序的序列合併成乙個有序序列。給定你乙個長度為n的整數數列。請你使用歸併排序對這個數列按照從小到大進行排序。並將排好序的數列按順序輸出。輸入格...

常用演算法排序(04) 歸併排序

歸併排序是利用先遞迴進行分解,將乙個規模為 n nn 的問題分解成兩個規模為 n 2 n 2n 2 的問題,再不斷的繼續進行遞迴分解成最終規模為1 11的問題。然後再逐漸的從小規模結果進行合併,最終得到完整的結果。也即分而治之的思想。其 如下 原圖位址 歸併排序使用了空間換時間的方式,用乙個輔助陣列...