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

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

用歸併排序法對一組資料由小到大進行排序,資料分別為 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 的有序表。

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

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

歸併排序 C語言

今天寫的是歸併排序,歸併排序的定義為 依次將每兩個相鄰的有序表合併成乙個有序表的排序方法。最經常使用的歸併方法是2 路歸併。假設初始序列含有n個記錄,則可看成是n個有序的子串行,每個子串行的長度為1,然後兩兩歸併,得到 n 2 個長度為2或1的有序子串行 再兩兩歸併,如此重複,直至得到乙個長度為n的...

自然歸併排序演算法(C語言)

例 a 自然歸併排序指的是對陣列先進行一次線性掃瞄,得到自然排好序的子數段,在對其進行兩兩合併成更大的排好序的陣列。include define n 8 int getindex int a n int index n index j n 後面mergesort中合併需要判斷i的範圍,否則index...

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

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