题解 | #合并两个有序的数组#
合并两个有序的数组
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]; } } } };