歸併排序 o nlogn

2021-10-25 03:08:19 字數 567 閱讀 3827

與選擇排序等相比,歸併排序的時間複雜度是o(nlogn),且是穩定的。

原理:將所排序序列分成兩個子串行,遞迴呼叫函式將子串行排好序後,再合併。

不足:需要乙個額外的陣列用於合併,造成空間的浪費。

c語言實現

int extraarry[

100000];

intcmp

(int element1,

int element2)

void

merge_sort

(int

*numsequence,

int start,

int end)

else

}while

(j!=mid)extraarry[i++

]=numsequence[j++];

while

(k!=end)extraarry[i++

]=numsequence[k++];

for(i=start;i)numsequence[i]

=extraarry[i];}

}

O nlogn 排序之歸併排序

第一輪 1 2 3 4 5 6 7 8 分成兩組 第二輪 1 2 3 4 5 6 7 8 每組在分成兩組 第三輪 1 2 3 4 5 6 7 8 每組在分成兩組 每輪分組的時間複雜度都為o logn 而每組的排序的時間複雜度為o n 綜合時間複雜度為o nlog 每組排完序之後,向上歸併。分組的過程...

歸併排序(2 路歸併排序)

遞迴寫法 include define maxn 100 void merge int a,int l1,int r1,int l2,int r2 將陣列a的區間 l1,r1 和區間 l2,r2 合併為乙個有序區間 else while i r1 while j r2 for int i 0 i非遞...

python歸併排序 python 歸併排序

排序思路 1.將陣列分成兩組a,b,建立臨時陣列 c,c長度 a b 2.i,j分別屬於a,b 3.若a i b j 將b j 放入c,j 否則 a i 放入c,i 4.迴圈3步驟,將a或b中剩餘的元素放入c,再將c複製到陣列中 5.遞迴3 4直到a,b序列的長度 1 歸併排序 class merg...