LeetCode: Merge Sorted Array
Given two sorted integer arrays A and B, merge B into A as one sorted array.
最开始的想法是,设两个指针,从0开始,分别标记数组A,B当前进行到的位置。通过不断比较和移动指针,实现数组的融合。
但是发现,数组B中的值会覆盖掉A中还未比较的值,所以插入的时候就要进行数组的移动。显然非常不理想。
后来学习到,可以从数组的后面开始比较。两个指针分别从数组的最后面开始,这样就不会有覆盖的情况发生。
1 public static void merge(int A[], int m, int B[], int n) { 2 int i=m-1; int j=n-1; 3 int p = n+m-1; 4 for (;i>=0 && j>=0;) { 5 if(A[i]<B[j]) { 6 A[p--] = B[j--]; 7 } 8 else { 9 A[p--] = A[i--]; 10 } 11 } 12 while (i>=0) { 13 A[p--] = A[i--]; 14 } 15 while (j>=0) { 16 A[p--] = B[j--]; 17 } 18 }