合并两个排序的整数数组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; //插入点的下一位置
}
}
};
本文介绍了一种合并两个已排序整数数组成一个有序数组的算法,利用二分查找定位插入位置,优化内存操作,确保算法效率。适用于数据结构与算法领域的学习者。

被折叠的 条评论
为什么被折叠?



