归并排序
对一个下标在 间的数组 排序。
一般可以这么调用:gsort(a,1,n),把 排好序。
int r[N];
void gsort(int *a,int x,int y){
if(x==y)
return;
int mid=(x+y)>>1;
gsort(a,x,mid);
gsort(a,mid+1,y);
int i=x,j=mid+1,k=x;
while(i<=mid&&j<=y)
if(a[i]<=a[j])
r[k++]=a[i++];
else
r[k++]=a[j++];
while(i<=mid)
r[k++]=a[i++];
while(j<=y)
r[k++]=a[j++];
for(int i=x;i<=y;i++)
a[i]=r[i];
}
时间复杂度 ,空间复杂度 。

浙公网安备 33010602011771号