//设有两个整数类型的顺序表A(m个元素)和B(n个元素),其元素均以从小到大排列。
//将这两个顺序表合并成一个顺序表,要求C的元素也要从小到大升序排列
#include<iostream.h>
#include<stdlib.h>
const int sizeA=100;
const int sizeB=100;
class combination
{
public:
combination(int m=0,int n=0){}
~combination(){}
void inputA();
void inputB();
void function();
private:
int A[sizeA];
int B[sizeB];
int C[sizeA+sizeB];
int m;
int n;
};
void combination::inputA()
{
cout<<"请输入顺序表A中元素的个数:";
cin>>m;
if(m>sizeA)
{
cerr<<"表溢出!"<<endl;
exit(1);
}
for(int i=0;i<m;i++)
{
cout<<"第"<<i+1<<"个元素为:";
cin>>A[i];
}
}
void combination::inputB()
{
cout<<"请输入顺序表B中元素的个数:";
cin>>n;
if(n>sizeB)
{
cerr<<"表溢出!"<<endl;
exit(1);
}
for(int i=0;i<n;i++)
{
cout<<"第"<<i+1<<"个元素为:";
cin>>B[i];
}
}
void combination::function()
{
for(int i=0,j=0,k=0;i<m&&j<n;)
{
if(A[i]>=B[j]) C[k++]=B[j++];
else C[k++]=A[i++];
}
if(i==m)
for(;j<n;j++) C[k++]=B[j];
else
for(;i<m;i++) C[k++]=A[i];
cout<<"合并后的数组为:";
for(k=0;k<=m+n-1;k++)
cout<<C[k]<<" ";
}
void main()
{
combination obj;
obj.inputA();
obj.inputB();
obj.function();
}