排序演算法之歸併排序

2021-10-02 13:07:58 字數 900 閱讀 7159

基本思想:歸併排序是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使用每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。

//歸併排序

void

_mergesort

(int

* a,

int begin,

int end,

int* tmp)

while

(begin1 <= end1)

tmp[index++

]= a[begin1++];

while

(begin2 <= end2)

tmp[index++

]= a[begin2++];

//2、合併

//歸併結果,拷回原陣列

index = begin;

while

(begin <= end)

a[index++

]= tmp[begin++];

}void

mergesort

(int

* a,

int n)

歸併排序的特性總結:

1、歸併的缺點在於需要o(n)的空間複雜度,歸併排序的思考更多的是解決在磁碟中的外排序問題。

2、時間複雜度:o(n*logn)

3、空間複雜度:o(n)

4、穩定性:穩定

排序演算法之歸併排序

歸併排序也是經典的使用分治法思想的代表演算法之一。歸併排序的效率很高,而且是一種穩定的排序。其總體的思想思路就是將待排序的元素分成大致相同的兩個子集合,分別對兩個子集合進行排序,最終將排序的子集合合併成排好序的總集合 歸併排序c 實現如下 include void mergesort int arr...

排序演算法之歸併排序

歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用,歸併排序將兩個已排序的表合併成乙個表。歸併排序基本原理 通過對若干個有序結點序列的歸併來實現排序。所謂歸併是指將若干個已排好序的部分合併成乙個有序的部分。歸併排序基本思...

排序演算法之歸併排序

歸併排序,和快排一樣同樣採用了分治的思想,將兩個 或以上 有序表合併成乙個新的有序表。歸併排序步驟如下 把n個記錄看成 n個長度為 1 的有序子表 進行兩兩歸併使記錄關鍵字有序,得到 n 2 個長度為 2 的有序子表 重複第2步直到所有記錄歸併成乙個長度為n的有序表為止。下面是歸併排序演算法的遞迴實...