資料結構經典演算法之七 歸併排序

2021-09-22 18:45:18 字數 1244 閱讀 3606

歸併排序

基本思想:分治演算法。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序(二路歸併就是指將兩個有序表合併成乙個有序表)

歸併排序重要分以下三個部分:

1. 把要排序的區間平均切分成兩個部分

2. 分治演算法,對左右兩個小區間進行同樣方式的排序,直到size == 1(有序) && size == 0(沒有數)

3. 合併左右兩個有序區間到乙個有序區間(需要利用額外空間)

//合併兩個區間為乙個區間

實現歸併排序演算法:

//歸併排序演算法

void

mergesortinner

(int

array,

int low,

int high,

int[

] extra)

//2.劃分成兩個有序區間

int mid = low +

(low + high)/2

;//分治演算法處理兩個小區間

mergesortinner

(array, low, mid, extra)

;mergesortinner

(array, mid, high, extra)

;//3.合併兩個區間為乙個區間

merge

(array, low, mid, high, extra)

;}

歸併排序特性總結:

歸併排序採用分治演算法

歸併排序的思考更多的是解決在磁碟中的外排序問題

時間複雜度:最好、最壞、平均都是o(n*log(n))

空間複雜度:o(n)

穩定性:穩定

資料結構 排序演算法之歸併排序

基本思想 將待排序的元素序列分成兩個等長的子串行,再將子串行劃分子串行,直到子串行中只有乙個元素就不用在對子序列繼續進行劃分,將劃分的每個區塊,進行排序,然後再將其歸併到乙個序列中,直到將所有的子串行歸併完成之後,則這個序列就完成了排序。1 基本思想如下所示 經過上面的劃分,從而可以看出經過劃分與歸...

資料結構 排序演算法之歸併排序

演算法思想 歸併排序是利用歸併的思想實現的排序方法,該演算法採用 分而治之 的思想將問題分成一些小的問題然後遞迴實現,最後合而為之。實現 遞迴實現 void merge int arr,const int left,const int mid,const int right,int temp whi...

資料結構之歸併排序

介紹 歸併排序是建立在歸併操作上的一種有效的排序演算法,效率為o nlogn 歸併排序的實現分為遞迴實現與非遞迴 迭代 實現。遞迴實現的歸併排序是演算法設計中分治策略的典型應用,我們將乙個大問題分割成小問題分別解決,然後用所有小問題的答案來解決整個大問題。非遞迴 迭代 實現的歸併排序首先進行是兩兩歸...