合并两个有序数组
合并两个有序的数组
http://www.nowcoder.com/questionTerminal/89865d4375634fc484f3a24b7fe65665
使用原数组空间,防止影响前面未合并元素,从后面开始遍历。双指针分别指向两个数组最后元素,比较合并,合并的指针前移,直到其中一个数组合并完成,再直接合并另一个数组。
class Solution { public: void merge(int A[], int m, int B[], int n) { int a = m; int b = n; int c = m + n - 1; while(a && b){ if(A[a-1] > B[b-1]){ A[c] = A[a-1]; c--; a--; }else{ A[c] = B[b-1]; c--; b--; } } while(a){ A[c] = A[a-1]; c--; a--; } while(b){ A[c] = B[b-1]; c--; b--; } } };