给定两个按照升序排列的数组,请把它们合成一个升序数组并输出。
本题以数组形式实现
#include<stdio.h>
#include<stdlib.h>
//合并有序数组
int main()
{
int a,b,c,k,i,j,A[100],B[100];
scanf("%d",&a); //进行数组a的输入
for(i=0;i<a;i++)
scanf("%d",&A[i]);
scanf("%d",&b); //进行数组b的输入
for(j=0;j<b;j++)
scanf("%d",&B[j]);
c=a+b; //目标数组的长度
int C[100];
i=0;
j=0;
k=0;
while(i<a&&j<b)//满足较短数组
{
if(A[i]>B[j])
{
C[k]=B[j];//记录较小的值
k++;
j++;
}
else
{
C[k]=A[i];
k++;
i++;
}
}
if(i<a)//说明b数组较短,下面复制a数组的余项
{
for(;k<c;)
{
C[k]=A[i];
k++;
i++;
}
}
else
{
for(;k<c;)
{
C[k]=B[j];
k++;
j++;
}
}
for(k=0;k<c;k++)
printf("%d\n",C[k]);
return 0;
}