遞迴實現歸併排序

2022-07-25 05:45:08 字數 649 閱讀 7111

歸併排序的核心其實算是合併兩個有序的陣列,我之前一直是用的判空實現的,即判斷兩個陣列誰先空並且把另外乙個剩下的接上去,但是這樣在處理邊界和結束條件的時候總感覺有些困難,然後昨天在演算法導論上看到了使用哨兵來進行合併操作,覺得思路很棒,就來實現一下了。

#include#includeusing namespace std;

void mymerge(int a, int p, int q, int r)

else }}

void mergesort(int a, int low, int high)

}int main() ;

int b = ;

mymerge(b, 0, 3, 6); //檢驗合併函式

for (int i = 0; i < 7; i++)

cout << b[i] <<" ";

cout << endl;

mergesort(a, 0, 6); //檢驗歸併排序函式

for (int i = 0; i < 7; i++)

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

cout << endl;

return 0;

}

歸併排序遞迴實現

include include define length 10 using namespace std void merge int ar,int br,int start,int mid,int end else if i mid else void copy int ar,int br,int...

歸併排序(遞迴實現)

演算法思想 1 歸併排序是利用遞迴與分治技術,將資料序列劃分成為越來越小的半子表,再對半子表排序,最後再用遞迴步驟將排好序的半子表合併成為越來越大的有序序列。其中 歸 代表的是遞迴的意思,即遞迴地將陣列折半地分離為單個陣列。例如,陣列 5,2,1,7 會先折半,分為 5,2 和 1,7 兩個子陣列,...

歸併排序遞迴實現

對於歸併排序,不僅有遞迴的實現方式,還有迭代的實現方式。迭代法實現歸併排序的 如下 include include define max size 10 實現歸併,並將最後的資料放入到list1中 void merging int list1,int list1 size,int list2,int...