合并两个排序的整数数组A和B变成一个新的数组。
样例
给出A = [1, 2, 3, empty, empty] B = [4,5]
合并之后A将变成[1,2,3,4,5]
注意
你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。
class Solution {
public:
void mergeSortedArray(int A[], int m, int B[], int n) {
int pos=0;
for(int i=0;i<n;++i){
pos=upper_bound(A+pos,A+m,B[i])-A;//二分查找快速定位插入位置
memmove(A+pos+1,A+pos,sizeof(int)*(m-pos));//腾出插入点
A[pos]=B[i];
++m; //插入一个元素后,长度自增一
++pos; //插入点的下一位置
}
}
};