C語言程式設計 C語言的歸併排序演算法!

2022-06-23 22:03:17 字數 1061 閱讀 4218

用歸併排序法對一組資料由小到大進行排序,資料分別為 695、458、362、789、12、 15、163、23、2、986。

(1) 自定義函式 merge(),實現一次歸併排序。

(2) 自定義函式 merge_sort(),實現歸併排序。

#include int merge(int r,int s,int x1,int x2,int x3)    //

自定義實現一次歸併樣序的函式

else

while(i<=x2) //

將x1〜x2範圍內未比較的數順次加到陣列r中

s[k++]=r[i++];

while(j<=x3) //

將x2+l〜x3範圍內未比較的數順次加到陣列r中

s[k++]=r[j++];

return0;

}int merge_sort(int r,int s,int m,int

n)

return0;

}int

main()

請輸入10個數:

695 458 362 789 12 15 163 23 2 986

排序後的順序是:

2   12   15   23  163  362  458  695  789  986

歸併是將兩個或多個存序記錄序列合併成一個有序序列。

歸併方法有多種,一次對兩個有序記錄序列進行歸併,稱為路歸併排序,也有三路歸併排序及多路歸併排序。本例項是二路歸併排序,基本方法如下:

(1) 將 n 個記錄看成是 n 個長度為 1 的有序子表。

(2) 將兩兩相鄰時有序無表進行歸併。

(3) 重複執行步驟 (2) 直到歸併成一個長度為 n 的有序表。

不管你是轉行也好,初學也罷,進階也可,如果你想學程式設計,進階程式設計師~

【值得關注】我的程式設計學習交流俱樂部!【點選進入】