题解 | 有序序列合并
有序序列合并
https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897
#include <stdio.h>
int main()
{
int n = 0, m = 0, num1[1001] = { 0 }, num2[1001] = { 0 }, num[2000] = { 0 };//此处注意数组的大小的设置
scanf("%d%d", &n, &m);
for (int a = 0; a < n; a++)
{
scanf("%d", &num1[a]);
}
//n可能为1000,故上面数组应大于1000,可取1001
num1[n] = 30001;//设置哨兵值
for (int a = 0; a < m; a++)
{
scanf("%d", &num2[a]);
}
num2[m] = 30001;//设置哨兵值
int i = 0, j = 0, k = 0;
//合并两个数组
for(k=0;k<n+m;k++)
{
if (num1[i] < num2[j])
{
num[k] = num1[i];
i++;
}
else
{
num[k] = num2[j];
j++;
}
}
for (k = 0; k < n + m; k++)
{
printf("%d ", num[k]);
}
return 0;
}
查看12道真题和解析