合并两个排序的整数数组A和B变成一个新的数组。
你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。
样例
给出 A = [1, 2, 3, empty, empty]
, B = [4, 5]
合并之后 A 将变成 [1,2,3,4,5]
思路:
1. 选择从后往前覆盖,先比较最后一个数的大小,然后从后往前挨个比较大小大的插入,小的等待。
2.当i和j都没有消耗完的时候,从后往前,谁大谁如,相应的指针减一
3。如果j没有循环完,则将剩下的都放入A即可。i没有循环完的话不用管,因为本次排序就是在A中进行的。
public void mergeSortedArray(int[] A, int m, int[] B, int n) {
int i = m-1;
int j = n-1;
int k = m+n-1;
while(i>-1&&j>-1)
if(A[i]>B[j]) {
A[k--] = A[i--];
}else {
A[k--] = B[j--];
}
while(j>-1)
A[k--] = B[j--];
}