(c语言)有序序列合并
#include<stdio.h>
//输入包含三行
//第一行包含两个正整数n,m,用空格分割,n表示第二行第一个升序序列中
//数字的个数,m表示第三行第二个升序序列中数字的个数
//第二行包含n个整数,用空格分割
//第三行包含m个整数,用空格分割
//输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m
//的升序序列中的元素重新进行升序序列排列合并
int main()
{
int n = 0;
int m = 0;
scanf("%d %d",&n,&m);
int arr1[n]; //vs系列的编译器都不可用变长数组
int arr2[m]; //C99标准——变长数组
//输入n个整数
int i = 0;
for (i = 0; i < m; i++)
{
scanf("%d",&arr1[i]);
}
//输入m个整数
for (i = 0; i < m; i++)
{
scanf("%d",&arr2[i]);
}
//合并打印
int j = 0;
int k = 0;
while (j < n && k < m) //两个数组的元素都未越界
{
if (arr1[j] < arr2[k])
{
printf("%d ",arr1[j]);
j++;
}
else
{
printf("%d ",arr2[k]);
k++;
}
}
if (j < n) //arr2数组越界,说明arr1数组内还有元素,接下来将arr1数组中的元素输出完
{
for (1; j < n; j++)
{
printf("%d ",arr1[j]);
}
}
else //arr1数组越界,说明arr2数组内还有元素,接下来将arr2数组中的元素输出完
{
for (1; k < m; k++)
{
printf("%d ",arr2[k]);
}
}
return 0;
}