C語言實現歸併排序

2021-07-14 20:34:44 字數 693 閱讀 2180

歸併排序

時間複雜度:o(nlogn)

空間複雜度:o(n)

穩定性:穩定

實現原理:採用分治法(divide and conquer)將已有序的子串行合併,得到完全有序的序列,即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,也叫二路歸併。

**實現:採用遞迴方法實現

#include

#include

#define maxsize 10

//實現歸併並把最後結果儲存到listl中

void merging(int *listl,int listl_size,int *listr,int listr_size)

}//把最大的依次追加在最後

while(iwhile(j//把臨時陣列的資料存放到listl中

for(n=0;nvoid merge_sort(int a,int len)

}//測試**

int main(int argc, char

const *argv)

;

merge_sort(array,6);

int i;

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

return

0;

}

歸併排序 C語言實現

merging sort 就是將兩個或兩個以上的有序表合併成一 個有序表的過程。將兩個有序表合併成個有序表的過程稱為2 路歸併,2 路歸併最為簡單和常用。演算法思想 假設初始序列含有n個記錄,則可看成是n個有序的子串行,每個子串行的長度為1,然後兩兩歸併,得到 n 2 個長度為2或1的有序子串行 再...

C語言實現歸併排序

歸併排序演算法完全遵循分治模式 偽 對分組歸併 merge a,p,q,r n1 q p 1 n2 r q let l 1.n1 1 and r 1.n2 1 be new arrays for i 1 to n1 l i a p i 1 for j 1 to n2 r j a q j l n1 1...

歸併排序的C語言實現

歸併排序的核心思想是 divide and conquer 演算法,即將要解決的size為n的問題,分成a個size為n b的子問題,這些子問題的結果經過o n d 的時間複雜度合併,即可解決最初的問題。所以,這一類的演算法,複雜度計算公式為 t n a t n b o n b 經過幾天的努力,終於...