歸併排序是一種很經典的演算法。
原理就是 把乙個陣列按照五五開的方式分成小塊,然後再乙個乙個的歸併起來。
在歸併的過程之中,也要保證兩個區間內的數字在歸併前的時候是有序的,並且在歸併完成之後也是有序的。這樣一直歸併下去,直到資料的區間是陣列頭到陣列尾。
#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...