歸併排序的遞迴實現

2021-10-06 16:26:08 字數 980 閱讀 3610

歸併排序是一種很經典的演算法。

原理就是 把乙個陣列按照五五開的方式分成小塊,然後再乙個乙個的歸併起來。

在歸併的過程之中,也要保證兩個區間內的數字在歸併前的時候是有序的,並且在歸併完成之後也是有序的。這樣一直歸併下去,直到資料的區間是陣列頭到陣列尾。

#include

#include

using

namespace std;

vector<

int> w;

void

merges

(int l1,

int r1,

int l2,

int r2)

while

(i <= r1) temp.

push_back

(w[i++])

;while

(j <= r2) temp.

push_back

(w[j++])

;for

(i =

0;i < temp.

size()

;i ++

) w[l1 + i]

= temp[i];}

void

mergesort

(int left,

int right)

}int

main()

//再輸入n個數字

mergesort(0

,w.size()

-1);

for(

int i =

0;i < w.

size()

;i ++

) cout << w[i]

<<

" ";

return0;

}/*sample input:

52 3 5 1 4

sample output:

1 2 3 4 5

*/

歸併排序遞迴實現

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