您的位置:首页 > 其它

LeetCode-Merge Sorted Array-合并有序表-归并排序

2014-10-15 21:37 435 查看
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++];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: