【归并排序】
void msort(int l,int r)
{
if(l==r) return ;
int mid=(l+r)>>1,p=l,q=mid+1,t=l;
msort(l,mid); msort(mid+1,r);
while(p<=mid&&q<=r)
{
if(a[p]<a[q]) b[t++]=a[p++];
else b[t++]=a[q++];
}
while(p<=mid) b[t++]=a[p++];
while(t<=r) b[t++]=a[q++];
FOR(i,l,r) a[i]=b[i];
}