程序如下:
#include<iostream>
using namespace std;
void onepaixu(int *p,int n)
{ int i,j,k,temp;
for(i=0;i<n;i++)
{ k=i;
for(j=i;j<n;j++)
if(*(p+j)<*(p+k))
k=j;
if(k!=i)
{ temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
}
}
void twopaixu(int *p1,int n1,int *q1,int n2)
{ int s=0,t=0,k=0;
int *r=new int[n1+n2];
while((*(p1+s)<=*(p1+n1-1))&&(*(q1+t)<=*(q1+n2-1)))
{ if(*(p1+s)<=*(q1+t))
{ r[k]=*(p1+s);
s++;}
else
{ r[k]=*(q1+t);
t++;}
k++;
}
if(s>=n1)
for(int i=t;i<n2;i++,k++)
r[k]=*(p1+t);
else
for(int i=s;i<n1;i++,k++)
r[k]=*(q1+s);
cout << "合并后的数组为:" <<endl;
for( k=0;k<n1+n2;k++)
cout<< r[k] <<" " ;
cout << endl;
}
int main()
{ int n[2],*p,*q,i;
cout << "请输入第一个一维数组的个数:" ;
cin >> n[0];
p=new int[n[0]];
cout << "请输入第一个一维数组:" ;
for(i=0;i<n[0];i++)
cin>> p[i];
onepaixu(p,n[0]);
cout << "第一个排序后的数组为:";
for(i=0;i<n[0];i++)
cout<< p[i] <<" " ;
cout << endl;
cout << "请输入第二个一维数组的个数:" ;
cin >> n[1];
q=new int[n[1]];
cout << "请输入第二个一维数组:" ;
for(i=0;i<n[1];i++)
cin>> q[i];
onepaixu(q,n[1]);
cout << "第二个排序后的数组为:";
for(i=0;i<n[1];i++)
cout<< q[i] <<" " ;
cout << endl;
twopaixu(p,n[0],q,n[1]);
return 0;
}