C用語言排序演算法 歸併排序(例項)

2021-10-09 12:31:24 字數 999 閱讀 8126

歸併排序:歸併演算法應用到分治策略,簡單說就是把乙個答問題分解成易於解決的小問題後乙個個解決,最後在把小問題的一步步合併成總問題的解。這裡的排序應用遞迴來把陣列分解成乙個個小陣列,直到小陣列的數字有序,在把有序的小陣列兩兩合併而成有序的大陣列。

#include

#include

#include

#define n 7

void

merge

(int arr,

int low,

int mid,

int high)

else}if

(left_low <= left_high)

if(right_low <= right_high)

for(i =

0; i < high - low +

1; i++

)free

(tmp)

;return;}

void

merge_sort

(int arr,

unsigned

int first,

unsigned

int last)

return;}

intmain()

;printf

("排序前 \n");

for(i =

0; i)printf

("%d\t"

, a[i]);

merge_sort

(a,0

, n -1)

;// 排序

printf

("\n 排序後 \n");

for(i =

0; i)printf

("%d\t"

, a[i]);

printf

("\n");

system

("pause");

return0;

}

C語言排序演算法之歸併排序

排序演算法中的歸併排序 merge sort 是利用 歸併 技術來進行排序。歸併是指將若干個已排序的子檔案合併成乙個有序的檔案。設兩個有序的子檔案 相當於輸入堆 放在同一向量中相鄰的位置上 r low m r m 1 high 先將它們合併到乙個區域性的暫存向量r1 相當於輸出堆 中,待合併完成後將...

C用語言排序演算法 希爾排序(例項)

希爾排序 在直接插入排序的思想下設定乙個最小增量dk,剛開始dk設定為n 2。進行插入排序,隨後再讓dk dk 2,再進行插入排序,直到dk為1時完成最後一次插入排序,此時陣列完成排序。include 進行插入排序 初始時從dk開始增長,每次比較步長為dk void insrtsort int a,...

mysql多路歸併排序 C語言歸併排序演算法

用歸併排序法對一組資料由小到大進行排序,資料分別為 695 458 362 789 12 15 163 23 2 986。實現過程 1 自定義函式 merge 實現一次歸併排序。2 自定義函式 merge sort 實現歸併排序。3 程式 如下 include int merge int r,int...