p48_合并两个已排序数组
2017-06-24 18:21
246 查看
p48_合并两个已排序数组
//相关题目:p48 //给定两个排好序的数组A1和A2,A1的末尾有足够的内存容纳A2的元素。 //请实现一个函数,把A2中的数据插入到A1中去,并且要求所有的元素都是排序的。 #include<iostream> #include<algorithm> #include<vector> using namespace std; class Solution { public: void MergeA1A2(int A1[], int szA1, int A2[], int szA2) { if(szA2==0) //szA1是A1实际数组长度,szA2是A2实际数组长度 return; int p=szA1+szA2-1; int p1=szA1-1; int p2=szA2-1; cout<<p1<<","<<p2<<endl; while(p1>=0 && p2>=0) { if(A1[p1] >= A2[p2]) { A1[p--]=A1[p1]; --p1; } else { A1[p--]=A2[p2]; --p2; } } if(p1<0) { while(p2>=0) A1[p--]=A2[p2--]; } else { while(p1>=0) A1[p--]=A1[p1--]; } } }; int main(void) { const int SIZE=20; int A1[SIZE]={2,4,6,10}; //4 int A2[]={1,3,5,6,7,8,9,11}; //8 //int A1[SIZE]={2,4,6,10}; //4 //int A2[10]={}; //0 //int A1[SIZE]={}; //0 //int A2[]={1,3,5,6,7,8,9,11}; //8 //int A1[SIZE]={}; //0 //int A2[10]={}; //0 int szA1=4; int szA2=8; Solution object; object.MergeA1A2(A1,szA1,A2,szA2); for(auto mem:A1) cout<<mem<<" "; cout<<endl; system("pause"); return 0; }
相关文章推荐
- 最坏情况下,合并两个大小为n的已排序数组所需要的比较次数
- 一个面试官经常问到的题,将两个数组合并到一个数组中,并排序。
- LeetCode --两个排序数组合并问题
- 剑指offer面试题java实现之题4之相关题目:两个排序数组合并
- 如何合并两个数组为一个数组,并且排序。
- 合并两个已经排序的数组
- 两个已排序数组的合并-C语言
- 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序
- 合并两个排序的数组
- 【Java】两个排序后的数组A和B,其中A的末端有足够的缓冲容纳B。编写一个方法,将B合并入A并排序。
- 将两个整形数组排序后合并成一个数组
- 面试题整理 4 合并两个排序的数组
- 两个数组合并,去掉重复的然后再排序
- 合并两个已经排序的数组
- [转载]:合并两个已排序好的int数组,并排序返回c#实现
- 合并两个排序数组
- 合并两个静态数组并排序
- C# 合并两个int数组 合并后根据大小排序 并输出
- 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序
- 合并两个排序的数组