大约就是归并的最后一并?
思路就是从后往前写,从大的往小的写。数组1有序,数组2都写完之后剩下的数组1就是正确位置不用动了。
void merge(vector<int>& a, int m, vector<int>& b, int n) {
if(b.empty())
return;
int i = m-1, j = n-1, k = m+n-1;
while(i>=0 && j>=0){
if(a[i]>b[j])
a[k--] = a[i--];
else
a[k--] = b[j--];
}
while(j>=0){
a[k--] = b[j--];
}
}