//作业要求:
//编写一个程序,输入两个包含10个元素的数组,先将第一个数组采用冒泡法进行降序排列,
//第二个数组采用选择排序进行降序排列,然后将这两个数组合并成一个降序数组。
#include<stdio.h>
void main()
{
int a[10],b[10],c[20];
int i,j,t,k;
printf("输入第一个数组:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
//给第一个数组排序
for(i=1;i<10;i++)
for(j=0;j<9;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("第一个数组经过冒泡降序后为:\n");
for(i=0;i<10;i++)
printf("%3d ",a[i]);
printf("\n\n");//输出排好的数组a;
printf("输入第二个数组:\n");
for (i=0;i<10;i++)
scanf("%d",&b[i]);
//给第二个数组排序
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(b[k]<b[j])
k=j;
if(k!=i)
{
t=b[i];
b[i]=b[k];
b[k]=t;
}
}
printf("第二个数组经选择排序后为:\n");
for(i=0;i<10;i++)
printf("%3d ",b[i]);
printf("\n\n");
//将两个数组合并成一个降序数组
for(i=0,j=0,k=0;i<10&&j<10;)
{ if(a[i]>b[j])
c[k++]=a[i++];
else
c[k++]=b[j++];
}
if(i<10)
for(;i<10;i++)
c[k++]=a[i];
if(j<10)
for(;j<10;j++)
c[k++]=b[j];
printf("合并后数组为:\n");
for(i=0;i<20;i++)
printf("%3d ",c[i]);
printf("\n\n");
}