归并排序就是用的这样的思路,每次比较两个数组的第一个元素,并将较小的一个存入新数组,从原数组删除,然后继续比较两个数组的第一个元素,以此类推。
代码如下:
class Solution { public: void merge(int A[], int m, int B[], int n) { vector<int> c; int i = 0, j = 0; while(i < m && j < n) { if(A[i] < B[j]) { c.push_back(A[i]); i++; } else { c.push_back(B[j]); j++; } } while(i < m) { c.push_back(A[i]); i++; } while(j < n) { c.push_back(B[j]); j++; } for(int i = 0; i < n + m; i++) { A[i] = c[i]; } } };
全部评论
(0) 回帖