C語言歸併排序

2021-09-06 02:13:33 字數 887 閱讀 8445

描述

給定乙個數列,用歸併排序演算法把它排成公升序。

輸入

第一行是乙個整數n(n不大於10000),表示要排序的數的個數;

下面一行是用空格隔開的n個整數。

輸出

輸出排序後的數列,每個數字佔一行。

歸併排序有兩個關鍵點

1.將兩個已經排好序的序列進行合併。

/*

*歸併2個有序序列為1個有序序列

* */

void merge(int *a, int start, int mid, int end)

else

}while (i <= mid)

while (j <= end)

i = start;

k = 0;

while (i <= end)

free(tmp);

}

2.遞迴函式進行分解問題

/*

* 遞迴函式,歸併演算法

*/void mergesort(int *a, int begin, int end)

整體**

#include void mergesort(int *a, int begin, int end);

void mergesort(int *a, int begin, int end);

int main()

mergesort(a, 0, n - 1);

for (size_t i = 0; i < n; i++)

C語言 歸併排序

歸併是將兩個或多個存序記錄序列合併成乙個有序序列。一般來說,一次對幾個有序記錄進行歸併,就稱為幾路歸併排序。以二路歸併排序為例,其基本方法如下 1 將 n 個記錄看成是 n 個長度為 1 的有序子表。2 將兩兩相鄰時有序序列進行歸併。3 重複執行步驟 2 直到歸併成乙個長度為 n 的有序表 如下所示...

C語言歸併排序

include include description 歸併排序 author qingq datetime 2021年3月8日20點03分 int length 待排序陣列長度 int a 待排序陣列 int b 輔助陣列b void mergesort int a,int low,int hig...

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

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