问题: 合并两个排序的整数数组A和B变成一个新的数组。
样例: 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
分析: 所给的两个数组都是已经排序完毕的数组,那就不需要将两个数组的元素先放入另一个数组再排序.只需每次取出没有被放入新数组的并且是A,B两数组中各自最小的两个元素,比较之后,将小者放入C中,大者进入下一轮比较,直至A或B任一数组的元素全部被放入新数组,最后A或B剩余的元素依次放入新数组即可.
代码如下:
public int[] mergeSortedArray(int[] A, int[] B) { // write your code here int a = A.length; int b = B.length; int c = a+b; int indexA = 0; int indexB = 0; int indexC = 0; int[] C = new int[c]; while(indexA != a && indexB != b) { if(A[indexA] < B[indexB]){ C[indexC++] = A[indexA]; indexA++; }else if(A[indexA] > B[indexB]){ C[indexC++] = B[indexB]; indexB++; }else{ C[indexC++] = A[indexA]; C[indexC++] = B[indexB]; indexA++; indexB++; } } while(indexC != c) { if (indexA == a){ C[indexC++] = B[indexC-a-1]; } if (indexB == b){ C[indexC++] = A[indexC-b-1]; } } return C; }