有序序列合并(c语言)


代码实例

cs 复制代码
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	//n输入第一个升序数组中的元素个数
	//m输入第二个升序数组中的元素个数

	//创建数组
	//arr1为n对应的数组
	int arr1[1000];
	//arr2为m对应的数组
	int arr2[1000];
	//arr3为数组1与数组2结合后的数组
	int arr3[2000];
	int i = 0;
	//输入数组1和数组2的元素
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr1[i]);
	}
	for (i = 0; i < m; i++)
	{
		scanf("%d", &arr2[i]);
	}
	i = 0;
	int j = 0;
	int k = 0;
	//只要其中有一个不满足条件的,就跳出循环
	//那剩下来的那就是元素个数相对与那一个过大的数组
	while (i < n && j < m)
	{
		if (arr1[i] <= arr2[j])
		{
			arr3[k++] = arr1[i++];
		}
		else
		{
			arr3[k++] = arr2[j++];
		}
	}
	//判断n和m是否有剩余元素
	//有的话,都给arr3。
	//因为他们都是升序数组,所以直接赋值就ok
	while (i < n)
	{
		arr3[k++] = arr1[i++];
	}
	while (j < m)
	{
		arr3[k++] = arr2[j++];
	}
	//遍历arr3的数组,即是结合后的升序数组
	for (i = 0; i < n + m; i++)
	{
		printf("%d " ,arr3[i]);

	}
	return 0;
}

运行结果;


相关推荐
noipp5 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
程序员二叉6 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木6 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕7 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
北域码匠8 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
努力小周8 小时前
STM32智能安防系统
c语言·stm32·单片机·嵌入式硬件·物联网·计算机网络·pcb工艺
手写码匠9 小时前
手写 GraphRAG:从零实现图增强检索增强生成系统
人工智能·深度学习·算法·aigc
BomanGe19 小时前
NSK重载高刚性滚珠丝杠技术详解
经验分享·算法·规格说明书
Matrix_119 小时前
手机里的计算摄影:广角形变校正算法
人工智能·算法·智能手机·计算摄影
WBluuue10 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist