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

2021-10-05 01:22:11 字數 851 閱讀 7691

演算法思想:假定無序序列中有n個元素,則可以看成是n個有序的子串行,每個子串行長度為1.然後兩兩合併,得到n/2個長度為2或1的有序序列,再兩兩歸併…如此重複之下,直到合併成長度為n的有序序列為止。

形如無序序列,兩兩歸併如下圖:

c語言**:

#include

#include

#define len 10

//進行歸併

void

merge

(int a,

int low,

int mid,

int high)

for(i=low,j=mid+

1,k=i;i<=mid&&j<=high;k++

)while

(i <= mid)

while

(j <= high)

}//歸併排序

void

mergesort

(int a,

int low,

int high)

}int

main()

;int i;

printf

("未排序前:\n");

for(i=

0;i)printf

("\n經過排序後:\n");

mergesort

(a,0

, len-1)

;for

(i=0

;i)}

如果以上程式或解釋有問題,請務必指出互相交流。

C語言實現歸併排序演算法

歸併排序 merging sort 的原理是假設初始序列含有n個記錄,則可以看成n個有序的子串行,每個子串行的長度為1,然後兩兩歸併,得到n 2個長度為2或者1的子串行 再兩兩歸併,如此重複,直至得到乙個長度為n的有序序列為止,這種排序方法稱為2路歸併排序。以下程式在dev c 中除錯執行通過。in...

C語言 實現歸併排序演算法

c語言 實現歸併排序演算法 歸併排序 merge sort 是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。乙個sjsrkelmt歸併排序的例子 對乙個隨機點的鍊錶進行排序 演算法描述 歸併操作的過程如下 特點 歸併排序是穩...

C語言實現歸併排序

歸併排序 時間複雜度 o nlogn 空間複雜度 o n 穩定性 穩定 實現原理 採用分治法 divide and conquer 將已有序的子串行合併,得到完全有序的序列,即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,也叫二路歸併。實現 採用遞迴方法實現 include...