题目:
输入两个升序的序列,将两个序列按升序合并,最后输出有序序列.
例如:
输入: 3,4
1 5 9
2 8 10 15
输出:1 2 5 8 9 10 15
思路:
代码:
#include<stdio.h>
int main()
{
//数组arr1和数组arr2的元素个数
int n = 0, m = 0;
scanf("%d %d", &n, &m);
int arr1[100] = { 0 };
int arr2[100] = { 0 };
int arr3[200] = { 0 };
//输入的n个元素存放在arr1中
for (int i = 0; i < n; i++)
{
scanf("%d", &arr1[i]);
}
//输入的m个元素存放在arr2中
for (int i = 0; i < m; i++)
{
scanf("%d", &arr2[i]);
}
int i = 0;
int j = 0;
int k = 0;
//循环并判断,比较arr1和arr2中的值,小的放前面
while (i < n && j < m)
{
if (arr1[i] < arr2[j])
{
arr3[k++] = arr1[i++];
}
else
{
arr3[k++] = arr2[j++];
}
}
//判断是i==n还是j==m
//如果i==n则把arr2后面的元素放入到arr3中
if (i == n)
{
for (; j < m; j++)
{
arr3[k++] = arr2[j];
}
}
//如果j==m则把arr1后面的元素放入到arr3中
else
{
for (; i < n; i++)
{
arr3[k++] = arr1[i];
}
}
//打印升序后的数列
for (int i = 0; i < k; i++)
{
printf("%d ", arr3[i]);
}
return 0;
}