题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
双指针合并
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int p1=0,p2=0;
int []merge=new int[m+n];
while(p1!=m&&p2!=n){
if(A[p1]<B[p2]){
merge[p1+p2] = A[p1];
p1++;
}else{
merge[p1+p2]=B[p2];
p2++;
}
}
//跳出while循环,一定有一个数组有剩余直接拷贝进去即可
//说明数组A有剩余
if(p1!=m){
for(int i=p1;i!=m;i++){
merge[i+p2]=A[i];
}
}
if(p2!=n){
for(int i=p2;i!=n;i++){
merge[i+p1]=B[i];
}
}
//最后将merge数组中的元素复制回去给A数组
for(int i=0;i!=m+n;i++){
A[i]=merge[i];
}
}
}