void mysort(int x[],int y[],int l,int r)//x为输入数组,y是用来暂时存数的,l是所选素组段左坐标,r是所选素组段右坐标
{
if(l<r)
{
int k=(l+r)/2;
int i=l,j=k+1,z=l;
mysort(x, y, l, k);//向左分
mysort(x, y, k+1,r);//向右分
while(z<=k||j<=r){//合并
if(j>r||(z<=k&&a[z]<=a[j]))
y[i++]=x[z++];
else
y[i++]=x[j++];
}
for(int i=l;i<=r;i++)//更新输入数组
x[i]=y[i];
}
}
归并排序模版(分治思想)
最新推荐文章于 2024-08-29 22:47:03 发布