牛客网第100题:有序序列合并

目录

思路

代码实现


本文将为大家带来一篇有关有序序列合并的文章。主要内容是:两个有序序列,将两个序列合并后,输出一个有序序列。在此我们规定:

1.两个序列中的每个值范围均为:【0~100】

2.两个序列的长度均为:【0~50】

在开始合并之前:我们通过键盘输入两个升序序列,如图所示:

思路

首先,该两个序列均为有序序列,所以我们的思路如下:

第一步:将两个序列的第一个元素进行比较,假设某一序列的首元素比较大,则将该值打印,然后将序列首元素的位置向后移动一位,指向第二个元素,此时我们假设该元素就是该序列首元素;

第二步:此时依然是两个序列的首元素进行比较,即重复第一步;

前两步代码如图所示:

 

第三步:一直重复第二步,直到两个序列中的一个序列全部比较完,此时,剩余的那个序列的剩余部分直接打印出来,即可。

好的,那么经过分析之后,我们加上框架

代码实现

#include<stdio.h>
int main()
{
	int arr1[1000] = { 0 };
	int arr2[1000] = { 0 };
	int n = 0;
	int m = 0;
	scanf("%d %d",&n,&m);
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d",&arr1[i]);
	}
	int j = 0;
	for (j = 0; j < m; j++)
	{
		scanf("%d", &arr2[j]);
	}
	i = 0;
    j = 0;
	while (i < n && j < m)
	{
		if (arr1[i] < arr2[j])
		{
			printf("%d ",arr1[i]);
			i++;
		}
		else
		{
			printf("%d ",arr2[j]);
			j++;
		}
	}
	if (i == n)
	{
		for (; j < m; j++)
		{
			printf("%d ",arr2[j]);
		}
	}
	else
	{
		for (; i < n; i++)
		{
			printf("%d ", arr1[i]);
		}
	}
	return 0;
}

结果如图所示:

如有错误,还请各位大神指正哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值