题解 | #有序序列合并#

有序序列合并

https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897

#include <stdio.h>

//合并数组
//思路:先从头开始比较两个数组的大小,先打印小的,小的下标加一,大的下标不变
void merge(int a[], int b[],int x,int y)
{
	int i = 0;
	int j = 0;
	while (i < x && j < y)
	{
		if (a[i] > b[j])
		{
			printf("%d ", b[j]);
			j++;
		}
		else
		{
			printf("%d ",a[i]);
			i++;
		}
		//打印剩下的数
		//判断谁先打印完
		if (j < y && i == x)
		{
			for (int k = j; j < y; j++)
			{
				printf("%d ", b[j]);
			}
		}
		if (i < x && j == y)
		{
			for (int k = i; i < x; i++)
			{
				printf("%d ", a[i]);
			}
		}


	}
}

int main()
{
	int a[1000] = { 0 };
	int b[1000] = { 0 };
	int x = 0;
	int y = 0;
	scanf("%d", &x);
	scanf("%d", &y);
	for (int i = 0; i < x; i++)
	{
		scanf("%d", &a[i]);
	}
	for (int j = 0; j < y; j++)
	{
		scanf("%d", &b[j]);
	}
	merge(a, b, x, y);

	return 0;
}

全部评论

相关推荐

拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
11-08 10:39
门头沟学院 C++
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务