题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
从后往前遍历,查看当前A和B数字中哪个最后面的数比较大,就把它放在A数组的对应位置(第m+n个位置)
public:
void merge(int A[], int m, int B[], int n) {
for(int i=m+n-1;i>=0;i--){
if(m>0&&n>0){
if(A[m-1]>B[n-1]){
A[i]=A[m-1];
m--;
}else{
A[i]=B[n-1];
n--;
}
}
else if(n>0) A[i]=B[n-1],n--;
//A有剩余不用管,因为已经在A数组的对应位置了
}
}
};