AcWing 787. 归并排序

归并排序模板

int tmp[100010];
void MergeSort(vector<int> &nums,int l,int r)
{
  if(l>=r)
    return;
  int mid=(l+r)/2;
  MergeSort(nums,l,mid);//使用mid和mid+1防止死循环
  MergeSort(nums,mid+1,r);
  int i=l,j=mid+1,index=0;
  while(i<=mid&&j<=r)
  {
    if(nums[i]<nums[j])
    {
      tmp[index++]=nums[i++];
    }
    else
    {
      tmp[index++]=nums[j++];
    }
  }
  while(i<=mid)
  {
    tmp[index++]=nums[i++];
  }
  while(j<=r)
  {
    tmp[index++]=nums[j++];
  }
  for(int ii=l,jj=0;ii<=r;ii++,jj++)
  {
    nums[ii]=tmp[jj];
  }

}

 

posted @ 2021-12-08 20:07  80k  阅读(33)  评论(0)    收藏  举报