void mergeSort(vector<int>& cun, vector<int>& temp, int l, int r)
{
if (l >= r) return;
int mid = (l + r) / 2;
mergeSort(cun, temp, l, mid);
mergeSort(cun, temp,mid + 1, r);
int i = l, j = mid + 1, pos = l;
while (i <= mid&& j <= r)
{
if (cun[i] <= cun[j])
{
temp[pos] = cun[i];
++i;
}
else
{
temp[pos] = cun[j];
++j;
}
++pos;
}
for (int k = i; k <= mid; ++k)
{
temp[pos++] = cun[k];
}
for (int k = j; k <=r; ++k)
{
temp[pos++] = cun[k];
}
copy(temp.begin() + l, temp.begin() + r + 1, cun.begin() + l);
}
带有递归的排序算法,今天做题碰到了,感觉很巧妙。