#include
<
iostream
>
using
namespace
std;
void
main()
;mergesort(a,1,
7);for(
inti=0
;i<7;i
++)cout
<<
endl;
char
f;cin
>>f;}
/***a,指向待排序陣列的指標,p,r表示爬序是從a中的第p個元素開始,到第r個元素結束,但要注意c++語言的下標是從0開始的
*/void
merge(
int*
a,int
p,int
q,int
r)for
(intj=
0;j<
n2;j++)
l[n1]
=1000
;r[n2]
=1000;//
由兩個已經排好序的子陣列,歸併成乙個排好序的長陣列
inti;
intj;i=
0;j=
0;for(
intk=p
-1;k<
r;k++
)else}}
void
mergesort(
int*
a,int
p, intr)}
歸併排序法
之前覺得這個很難,後來看了一些部落格,理解了之後總算是懂了。算是之前的補充。並且今天筆試有排序演算法,正好做個記錄,加深映象 歸併排序的核心是分而治之,先分開,再兩兩合併,合併的時候調整順序。例如 待排序序列 4 8 5 3 9 6 2 4 第一次分 4 8 5 3 9 6 2 4 第二次分 4 8...
歸併排序法
合併排序 merge sort 是又一類不同的排序方法,合併的含義就是將兩個或兩個以上的有序資料序列合併成乙個新的有序資料序列,因此它又叫歸併演算法。它的基本思想就是假設陣列a有n個元素,那麼可以看成陣列a是又n個有序的子串行組成,每個子串行的長度為1,然後再兩兩合併,得到了乙個 n 2 個長度為2...
歸併排序法
void guibing int r,int temp,int s,int m,int t 陣列r的兩個連續的有序列,從第s到第m個,從第m 1到第t個,合併產生乙個有序列 從第s到第t else temp k r j while i m while j t 將剩餘的插入,只會進行兩個while中的...