200126(遞迴實現歸併排序)

2021-10-02 09:23:04 字數 1194 閱讀 1024

依然是遞迴三部曲:

1.遞迴什麼時候結束:當start和end相等時,無法繼續再分下去。

2.遞迴返回的是什麼:返回的是已經完成歸併排序的子陣列(即返回的是公升序序列)。

3.每個遞迴中要做什麼:對兩個已經完成歸併排序的子陣列[start,mid]和[mid+1,end]重新進行歸併排序。

#include

#include

#include

using

namespace std;

//歸併排序

void

merge

(vector<

int>

&data,

int start,

int mid,

int end)

}//若second_start先到了後半段末尾

while

(first_start <= mid)

temp[copy_start++

]= data[first_start++];

//若first_start先到了前半段末尾

while

(second_start <= end)

temp[copy_start++

]= data[second_start++];

for(

int i = start; i <= end; i++

) data[i]

= temp[i];}

void

mergesort

(vector<

int>

&data,

int start,

int end)

intmain()

;mergesort

(v,0

, v.

size()

-1);

copy

(v.begin()

, v.

end(

), ostream_iterator<

int>

(cout,

" "));

system

("pause");

return0;

}

歸併排序遞迴實現

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...