將乙個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之。
將待排序元素分成大小大致相同的兩個子集合,分別對兩個子集合進行排序,最終將排好序的子集合合併成要求的排好序的集合
void
mergesort
(int a,
int left,
int right)
}
void
mergesort
(int a,
int n)
}
void
mergepass
(int x,
int y,
int s,
int n)
if(i+s
else
}}
/*合併c[n:m]和c[m+1:r]到d[n:r]*/
void
merge
(int c,
int d,
int n,
int m,
int r)
else}if
(i > m)
}else
}}
void
copy
(int a,
int b,
int l,
int r)
}
#include
using
namespace std;
void
mergesort
(int a,
int left,
int right)
;void
copy
(int a,
int b,
int l,
int r)
;void
merge
(int c,
int d,
int n,
int m,
int r)
;int
main
(int argc,
char
const
*ar**)
;printf
("初始時,array為:");
for(
int i =
0; i < count; i++
)printf
("\n");
mergesort
(array,0,
13);printf
("排序後,array為:");
for(
int i =
0; i < count; i++
)printf
("\n");
return0;
}void
copy
(int a,
int b,
int l,
int r)
}/*合併c[n:m]和c[m+1:r]到d[n:r]*/
分治法實現歸併排序
分治法實現歸併排序 include using namespace std define size 10 void merge int array,int first,int mid,int last 合併 if i mid for i mid i new arr k array i if j la...
分治法,歸併排序
1.時間複雜度為o nlog n 非降序 package com.cn.insertion 歸併排序,採用分治法的策略 author administrator public class merge sort mergesort a,0,9 for int i 0 i a.length i 先分在和...
分治法(歸併排序)
分治法.cpp 定義控制台應用程式的入口點。include stdafx.h include include include define max 30 using namespace std int l max int r max void merge int a,int p,int q,int ...