sort-归并排序

void sort_merge(vector<int> &v,int left,int right)
{
	if(left>=right) return;

	int mid=(left+right)/2;
	sort_merge(v,left,mid);
	sort_merge(v,mid+1,right);

	vector<int> vtmp;
	int i=left,j=mid+1;

	while(i<=mid&&j<=right)
	{
		if(v[i]<v[j])
			vtmp.push_back(v[i++]);
		else
			vtmp.push_back(v[j++]);
	}
	while(i<=mid)
		vtmp.push_back(v[i++]);
	while(j<=right)
		vtmp.push_back(v[j++]);

	for(int m=left,k=0;m<=right;m++)
		v[m]=vtmp[k++];
}
原文地址:https://www.cnblogs.com/smallredness/p/10684643.html