利用分治策略实现一维数组排序
分治法-排序
- 伪代码描述
- 代码实现
void Merge(int a[],int l,int m,int r)
{
int i=l;
int j=m+1;
int k=0;
int resu[N]={0};
while((i<=m)&&(j<=r))
{
if(a[i]<a[j])
{
resu[k]=a[i];
i++;
}
else
{
resu[k]=a[j];
j++;
}
k++;
}
while(i<=m)
{
resu[k]=a[i];
i++;k++;
}
while(j<=r)
{
resu[k]=a[j];
j++;k++;
}
for(i=0;i<k;i++)
{
a[l++]=resu[i];
}
}
void MergeSort(int a[],int l,int r)
{
int m;
if(r-l>=1)
{
m=(l+r)/2;
MergeSort(a,l,m);
MergeSort(a,m+1,r);
Merge(a,l,m,r);
}
}