分治思想的歸併排序演算法

2022-03-22 09:52:37 字數 815 閱讀 4340

今天看了演算法導論上歸併排序演算法部分,應用了分治思想。將書上的偽**用c++寫了出來。但書中的陣列下標都是從1開始而不是我們平時使用的從0開始,所以與書中稍有不同。

**如下(注釋用英語寫的,如果寫漢語,會有難看下劃線,實在不喜歡):

1 #include 2

using

namespace

std;34

void merge(int m, int l, int p, intr)5

18while(j < n2) //

the right part is put into array r

1923 l[n1] = 10000

;24 r[n2] = 10000;25

26 i = j = 0;27

for(k = l; k <= r; ++k) //

merge the array passed in

2834

else

3539}40

}41void merge_sort(int m, int l, int

r)4258}

5960

intmain()61;

6364 merge_sort(a, 0, 7

);65

for(int i = 0; i < 8; ++i) //

output the sorted array

66 cout << a[i] << "";

67 cout <68return0;

69 }

歸併排序(分治思想)

分治 劃分問題 把序列分成元素個數盡量相等的兩半 遞迴求解 把兩半元素分別排序 合併問題 把兩個有序表合併成乙個 include include include includeusing namespace std void merge sort int a,int x,int y,int t if...

歸併排序(分治思想)

演示 具體的我們以一組無序數列 14,12,15,13,11,16 為例分解說明,如下圖所示 上圖中首先把乙個未排序的序列從中間分割成2部分,再把2部分分成4部分,依次分割下去,直到分割成乙個乙個的資料,再把這些資料兩兩歸併到一起,使之有序,不停的歸併,最後成為乙個排好序的序列。實現 include...

歸併排序(分治思想)

歸併排序 歸併排序 英語 merge sort,或mergesort 是建立在歸併操作上的一種有效的排序演算法。1945年由約翰 馮 諾伊曼首次提出。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用,且各層分治遞迴可以同時進行。由於歸併排序分治出來是一棵二叉樹,複雜度...