【排序】归并排序模板_递归

 

int temp[N];
void merge_sort(int q[],int l,int r){
 if(l>=r)return;
 int mid=l+r >> 1;
 merge_sort(q,l,mid);
 merge_sort(q,mid+1,r);
 int k=0;int i=l;int j=mid+1;
 while(i<=mid&&j<<r){
   if(q[i]<=q[j])temp[k++]=q[i++];
   else temp[k++]=q[j++];
 }
 while(i<=mid)temp[k++]=q[i++];
 while(j<=r)temp[k++]=q[j++];
 for(k=0,i=l;i<=r;i++,k++)q[i]=temp[k];
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.