publicvoidmerge(int A[],int m,int B[],int n){int[] C =newint[m + n];int i =0, j =0, k =0;while(i < m && j < n){if(A[i]< B[j]) C[k++]= A[i++];else C[k++]= B[j++];}// 添加数组中剩余的元素while(i < m) C[k++]= A[i++];while(j < n) C[k++]= B[j++];for(i =0; i < k; i++)
A[i]= C[i];}
在 A 上原地修改,从尾部向前遍历 A B 数组,把大的元素放到 A 的尾部
publicvoidmerge(int A[],int m,int B[],int n){int i = m -1, j = n -1, k = m + n -1;while(i >=0&& j >=0){if(A[i]> B[j]) A[k--]= A[i--];else A[k--]= B[j--];}// 只需要把 B 中剩余元素复制到 A 中while(j >=0) A[k--]= B[j--];}