歸併排序
時間複雜度: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 經過幾天的努力,終於...