void merge(int l,int mid,int r){
int i,j,k;
i=l;j=mid+1;k=l;
while(i<=mid&&j<=r){
if(a[i]<=a[j]) b[k++]=a[i++];//b数组暂时存放一下里面的值,a[i]和a[j]哪个小放哪个
else b[k++]=a[j++];
}
while(i<=mid) b[k++]=a[i++];//检查是否有遗漏
while(j<=r) b[k++]=a[j++];
for(int i=l;i<=r;i++)a[i]=b[i];//重新赋值给a
}
void msort(int l,int r){
int mid=(l+r)/2;
if(l==r) return;//边界
msort(l,mid);//先把起始点到中间的找到
msort(mid+1,r);//再把中间到最后的找到
merge(l,mid,r);//合并,排序
}