http://www.lintcode.com/zh-cn/problem/merge-sorted-array/
一.目的:将小的数组合并到大的数组之中
二.思路:如将B merge 到A 中,应该从后置位开始排数,因为如果从前置位开始排数会导致大量的移数消耗,数组的移数消耗很大
三个指针,一个A的,一个B的,一个当前的
三.易错点:当前的指针容易搞错,不要忘记是一个大一个小,比较完一个之后要将另外一个剩余的排入。
代码如下:
class Solution {
/**
* @param A: sorted integer array A which has m elements,
* but size of A is m+n
* @param B: sorted integer array B which has n elements
* @return: void
*/
public void mergeSortedArray(int[] A, int m, int[] B, int n) {
int i = m - 1, j = n - 1, index = m + n - 1;
while(i >= 0 && j >= 0){
if(A[i] > B[j]){
A[index] = A[i];
index--;
i--;
}else{
A[index] = B[j];
index--;
j--;
}
}
while(i >= 0){
A[index--] = A[i--];
}
while(j >= 0){
A[index--] = B[j--];
}
}
}