题目描述
写一个函数,传入两个非降序的数组A,B,将A,B合并为一个非降序数组C,返回C(不要使用内置函数sort),(测试用例仅供参考,我们会根据代码质量进行评分).
输入描述
第一行两个正整数n,m.(1<=n,m<=100000)分别表示数组A,B的大小。
第二行输入数组A,
第三行输入数组B。
A,B数组元素<=10000
样例输入
3 3
1 9 10
3 12 41
样例输出
1 3 9 10 12 41
快排思想。
#include<iostream>
#include<cstring>
using namespace std;
const int N=1e6+10;
int q[N],a[N],b[N];
int n,m;
void quick_sort(int q[],int l,int r)
{
if(l>=r) return ;
int x=q[l+r>>1],i=l-1,j=r+1;
while(i<j)
{
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j) swap(q[i],q[j]);
}
quick_sort(q,l,j);
quick_sort(q,j+1,r);
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=m;i++)
cin>>b[i];
for(int i=1;i<=n;i++)
q[i]=a[i];
for(int i=n+1,j=1;j<=m;i++,j++)
q[i]=b[j];
quick_sort(q,1,n+m);
for(int i=1;i<=n+m;i++)
cout<<q[i]<<" ";
return 0;
}