首页 > 代码库 > LeetCode-Merge Sorted Array-合并有序表-归并排序
LeetCode-Merge Sorted Array-合并有序表-归并排序
https://oj.leetcode.com/problems/merge-sorted-array/
归并排序的一步操作,需要事先把A[]的元素移到数组末端,前段空出来填充结果。需要注意的是如果从0~m的转移会在n比较小的时候有问题。所以要从m~0转移。使用memcpy在GCC下就是从0~m开始转移,这个行为跟MSVC不一样。
class Solution {public: void merge(int A[], int m, int B[], int n) { //memcpy(A+n,A,m*sizeof(int)); //error in gcc, succeed in msvc because of filling order for(int i=m-1;i>=0;i--) A[i+n]=A[i]; int p=n; int q=0; int r=0; while(p<n+m && q<n){ if (A[p]>B[q]) { A[r]=B[q]; r++;q++; } else { A[r]=A[p]; r++;p++; } } while(p<n+m) A[r++]=A[p++]; while(q<n) A[r++]=B[q++]; }};
LeetCode-Merge Sorted Array-合并有序表-归并排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。