lintcode-合并排序数组II-64

合并两个排序的整数数组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;                                    //插入点的下一位置
        }    
    }
};


你可能感兴趣的:(lintcode-合并排序数组II-64)