<之一> 先拼接再排序
#include<stdio.h>
#define N 100
void swap(int *a,int *b) //交换两数
{
int t=*a;
*a=*b;
*b=t;
}
void s_sort(int a[],int len) //选择排序
{
for(int i=0;i<len-1;i++)
for(int j=i+1;j<len;j++)
if(a[i]>a[j])
swap(&a[i],&a[j]);
}
int main(){
int m,n;
scanf("%d%d",&m,&n);
int a[N],b[N/2];
for(int i=0;i<m;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
scanf("%d",&b[i]);
for(int i=m,j=0;i<N;i++,j++) //将b数组接在a数组后面 (要保证a数组足够大)
a[i]=b[j];
s_sort(a,m+n); //进行排序
for(int i=0;i<m+n;i++)
printf("%d ",a[i]);
return 0;
}
<之二> 当a、b数组有序时:创建一个新数组c,数组c的长度要大于等于数组a和b之和。通过比较两个有序数组中的元素,谁小就把谁放到数组c中,直到其中一个数组为空,最后把剩下的数组元素全部放到数组c里
#include<stdio.h>
#define N 100
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int a[N],b[N],c[N+N];
for(int i=0;i<m;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
scanf("%d",&b[i]);
s_sort(a,m);
s_sort(b,n);
//******************************a、b有序时***************************************//
int i,j,k;
i=j=k=0;
while(i<m&&j<n) //a、b都有元素时比较两数组 :小的存入c中
if(a[i]>=b[j])
c[k++]=b[j++];
else
c[k++]=a[i++];
for(i;i<m;i++) //若a还有元素
c[k++]=a[i];
for(j;j<n;j++) //若b还有元素
c[k++]=b[j];
//******************************************************************************//
for(i=0;i<m+n;i++)
printf ("%d ",c[i]);
return 0;
}