始终保持A数组的长度小于等于B数组,且新数组长度为A.length+B.length,第一个while将两个数组相互比较,一定有一个数组走到尽头,不知道是A还是B,所以再依次循环,遍历结束。
代码如下:
public static int[] mergeSortedArray(int[] A, int[] B) { // write your code here int[] new_array=new int[A.length+B.length]; if(A.length==0) return B; if(B.length==0) return A; int i=0,j=0; if(B.length<A.length) mergeSortedArray(B,A); while(i<A.length&&j<B.length){ if(A[i]<=B[j]){ new_array[i+j]=A[i]; i++; }else{ new_array[i+j]=B[j]; j++; } } while(i<A.length){ new_array[i+j]=A[i]; i++; } while(j<B.length){ new_array[i+j]=B[j]; j++; } return new_array; }