C语言每日一题

今天分享的是一道牛客网上面的题目,链接在下面
有序序列合并

在这里插入图片描述
这道题做法有很多,最简单的是合并一起,然后用排序就行了,今天将一个最高效的办法,思路是两个数组第一项进行比较,小的先输出,输出的那个数组的下标往后移动,然后再进行比较,如果是另一个数组小,那先输出那个,然后那个数组下标往后移动,依次这样,就能把两个数组合并进行输出了。

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

		}
	}
	if (i == n)
	{
    
    
		for (; j < m; j++)
		{
    
    
			printf("%d ", arr2[j]);
		}
	}
	else
	{
    
    
		for (; i < n; i++)
		{
    
    
			printf("%d ", arr1[i]);
		}
	}
	return 0;
}

这就是今天代码分享,主要是觉得这个思路还行,就分享出来了,文章质量不是特别好,谢谢大家!!!

猜你喜欢

转载自blog.csdn.net/2301_76895050/article/details/132050615
今日推荐