//分治法:合并排序
int merge(int A[],int p,int q,int r)  //假设数组A[p...q]和A[q+1...r]已经排好序
{
 int n1=q-p+n;
 int n2=r-q;
 int L[n1],R[n2];
 for(int i=1;i<=n1;i++)
  L[i]=A[p+i-1];
 for(int j=1;j<=n2;j++)
  R[j]=A[q+j];
 i=1;
 j=1;
 for(k=p;k<=r;k++)
 {
  if(L[i]<=R[j])
  {
   A[k]=L[i];
   i++
  }
  else
  {
   A[k]=R[j];
   j++;
  }
 }
}

评论