题解 | #合并两个有序的数组#
合并两个有序的数组
http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
class Solution {
public:
/***
归并排序:
双指针从A和B的m、n尾部遍历
比较A和B的m、n尾部的值,将较大值赋给A整体数组的尾部,指针左移
注意特殊情况处理:A的尾指针已遍历结束,B尾指针还未结束。
***/
void merge(int A[], int m, int B[], int n) {
if(m<1){
for(int i=0;i<n;i++){
A[i] = B[i];
}
return;
}
if(n<1){
return;
}
while(m>0 && n>0){
if(A[m-1]>B[n-1]){
A[m+n-1] = A[m-1];
m-=1;
}else{
A[m+n-1] = B[n-1];
n-=1;
}
}
if(n>0){
for(int i=0;i<n;i++){
A[i] = B[i];
}
}
}
}; 