将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表

news2024/12/23 10:22:28

将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表

算法思路:
这个其实就是一个归并排序,我们这里两顺序表为升序,要合并成一个升序表
用i和j分别标记顺序表A和顺序表B的元素,然后新表是C

每次从A和B中选一个较小值放C里面

//将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表
Sqlist merge(Sqlist A, Sqlist B,Sqlist* C) {
	//其实就是一个归并排序
	int i = 0;//标记A元素
	int j = 0;//标记B元素
	int k = 0;//标记C元素
	while (i < A.length&&j < B.length) {
		if (A.data[i] <= B.data[j]) {
			(*C).data[k] = A.data[i];
			i++;
		}
		else {
			(*C).data[k] = B.data[j];
			j++;
		}
		k++;
	}
	//跳出上面的循环说明有一个顺序表搞完了,把剩余一个接上去就可以了
	while (i < A.length) {
		(*C).data[k] = A.data[i];
		k++;
		i++;
	}
	while (j < B.length) {
		(*C).data[k] = B.data[j];
		k++;
		j++;
	}
}
int main()
{
	Sqlist A;
	InitList1(&A);//初始化一个顺序表:1,3,5,7,9,10
	printf("初始顺序表A为:");
	print(&A);

	Sqlist B;
	InitList2(&B);//初始化一个顺序表:2,4,6,8
	printf("初始顺序表B为:");
	print(&B);
	printf("\n");

	Sqlist C ;//对C初始化一下
	InitList(&C);
	merge(A, B, &C);
	printf("合并后顺序表为:");
	print(&C);
	return 0;
}

在这里插入图片描述

注:顺序表的定义及初始化操作,还有打印顺序表函数,考试你写上面的功能函数就行了

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<malloc.h>
#define MaxSize 10//定义最大长度
int InitArr[10] = { 1,2,2,2,3,3,4,5,5,5 };
int Initarr[10] = {1,3,5,7,9,10};
int Initbrr[10] = {2,4,6,8};

typedef struct {
	int data[MaxSize];//用静态的数据存放数据元素
	int length;//顺序表当前长度
}Sqlist;//顺序表的类型定义

//初始化一个顺序表
void InitList(Sqlist* L)
{
	for (int i = 0;i < MaxSize;i++)
	{
		L->data[i] = InitArr[i];//将所有数据元素设置为默认初始值
	}
	L->length = 10;//顺序表初始长度为0
}

//初始化一个顺序表A
void InitList1(Sqlist* L)
{
	for (int i = 0;i < 6;i++)
	{
		L->data[i] = Initarr[i];//将所有数据元素设置为默认初始值
	}
	L->length = 6;//顺序表初始长度为5
}
//初始化一个顺序表B
void InitList2(Sqlist* L)
{
	for (int i = 0;i < 4;i++)
	{
		L->data[i] = Initbrr[i];//将所有数据元素设置为默认初始值
	}
	L->length = 4;//顺序表初始长度为4
}
void print(Sqlist* L)
{
	for (int i = 0;i < L->length;i++)
	{
		printf("%d ", L->data[i]);
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1136431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot异步线程池

项目中经常会遇到线程池异步处理一些任务 1.配置信息 # 异步线程配置 # 核心线程数 async:executor:thread:core_pool_size: 10# 最大线程数max_pool_size: 100# 任务队列大小queue_capacity: 20# 线程池中线程的名称前缀name:prefix: kc-async-service-# 缓冲队列中线程的空闲…

玫瑰红葡萄酒的基本知识

在过去的几年里&#xff0c;玫瑰红葡萄酒越来越受欢迎&#xff0c;但是如果你是饮用玫瑰红葡萄酒的新手&#xff0c;你可能想知道它是如何从其他红葡萄酒或白葡萄酒中脱颖而出的。 玫瑰红具有标志性的粉色&#xff0c;很难归类&#xff0c;那它是更适合放在红酒类还是属于白酒…

什么是IGBT测试,igbt动态测试都有哪些指标,纳米软件科普

IGBT测试是指对绝缘栅双极型晶体管(IGBT)的性能进行检测和评估。IGBT是一种复合全控型电压驱动式功率半导体器件&#xff0c;兼有金属氧化物半导体场效应晶体管(MOSFET)的高输入阻抗和电力晶体管(GTR)的低导通压降两方面的优点。 IGBT测试包括电气性能测试、可靠性测试、耐久性…

全能型开源数据库监控平台 - lepus

简 介 Lepus 是一款开源的数据库监控平台&#xff0c;目前已经支持 MySQL、Oracle、SQLserver、MongoDB、Redis 等数据库的基本监控和告警。 Lepus 在监控数据库时&#xff0c;无需在每台数据库服务器上部署脚本或 Agent&#xff0c;只需要在数据库中创建授权账号后&#…

HarmonyOS 自定义抽奖转盘开发(ArkTS)

介绍 本篇 Codelab 是基于画布组件、显式动画&#xff0c;实现的一个自定义抽奖圆形转盘。包含如下功能&#xff1a; 1. 通过画布组件 Canvas&#xff0c;画出抽奖圆形转盘。 2. 通过显式动画启动抽奖功能。 3. 通过自定义弹窗弹出抽中的奖品。 相关概念 ● Stack组件…

业务流程图基本规范要求

再描述业务流程应该如何画之前&#xff0c;需要了解几个概念 BPA&#xff08;Business Process Automation&#xff09;是指通过自动化技术来改进和优化企业的业务流程&#xff0c;以提高生产力 和效率。 BPM&#xff08;Business Process Management&#xff09;是指对企业…

java数据结构 基本查找,二分查找,分块查找

目录 算法查找基本查找二分查找优化方式 插值查找了解即可斐波那契查找 了解以上总结 分块查找 算法查找 基本查找 又叫顺序查找 从0索引开始挨个往后查找 需求 定义一个方法利用基本查找 查找某个元素是否存在 {132,135,65,86,89,6} public static void main(String[] args) …

java--while循环

1.while循环 2.示例 3.执行的流程&#xff1a; ①循环一开始&#xff0c;执行int i 0一次 ②此时 i0&#xff0c;接着计算机执行循环条件语句&#xff1a;0 < 3 返回true&#xff0c;计算机就进到循环体中执行&#xff0c;输出&#xff1a;"Hello World",然后执…

SpringBoot 源码分析(四) 内置Tomcat分析

一、Tomcat相关知识 1. tomcat目录结构 Tomcat文件的目录结构 2.启动流程 启动一个Tomcat服务是执行的bin目录下的脚本程序&#xff0c;startup.bat和 startup.sh.一个是windows的脚本&#xff0c;一个是Linux下的脚本&#xff0c;同样还可以看到两个停止的脚本 shutdown.ba…

AIGC是什么?一文读懂人工智能生成内容技术!

文章目录 前言一、AIGC是什么&#xff1f;二、AIGC的4个主要特征1、文本生成2、图像生成3、语音生成4、视频生成 三、AIGC如何运作&#xff1f;步骤1&#xff1a;收集数据步骤2&#xff1a;模型训练步骤3&#xff1a;内容生成步骤4&#xff1a;反馈和改进 四、AIGC关键技术能力…

智慧社区燃气管网监测系统

燃气易燃易爆&#xff0c;一旦操作不当或疏忽大意&#xff0c;极易引发燃气安全事故&#xff0c;造成严重后果&#xff0c;2023年10月24日&#xff0c;在吉林某小区&#xff0c;发生了燃气使用不当产生的爆炸导致了1人死亡&#xff0c;1人重伤&#xff0c;15人轻伤&#xff0c;…

网络监控硬盘录像机!

目录 认识录像机以及选购前小知识&#xff01; 1.网络监控摄像头的像素和分辨率对照参考&#xff1a; 2.录像视频的大小主要受摄像头的像素和存储编码影响&#xff0c;这些在设置录像的时候&#xff0c;都是可以改的。 3.关于录像机存储能力咨询 4.关于存储编码简介 认识录…

网页的基本结构

标签的结构 HTML网页是由HTML标签组成的描述性文本&#xff0c;HTML标签可以说明文字&#xff0c;图形、动画、声音、表格、链接等。 一个标签由开始标签&#xff0c;结束标签、标签名、标签属性组成 <div><a href"https://www.creatorblue.com/">创蓝…

酷开科技依托酷开系统推动家庭智能化加速发展

为什么越来越多的人会选择智能家居&#xff1f;因为智能家居的出现&#xff0c;大大方便了我们的生活&#xff0c;为生活提供便利舒适的体验&#xff1b;就如同洗衣机与洗碗机解放了我们的双手是一样的道理&#xff0c;智能家居是在生活的方方面面为我们提供更加便利化的可能性…

C++数据结构X篇_24_归并排序(稳定的排序)

本篇参考十大经典排序算法-归并排序算法详解进行整理和补充。 文章目录 1. 什么是归并排序1.1 概念1.2 算法原理1.3 算法实现 2. 归并排序算法特点2.1 时间复杂度2.2 空间复杂度2.3 稳定性 1. 什么是归并排序 1.1 概念 归并排序&#xff08;Merge sort&#xff09; 是建立在…

NFTScan 获 Optimism 基金会 Cycle 14 Grant 支持 35,000 枚 OP !

近期&#xff0c;Optimism 基金会官方公布了 Grants Program Cycle 14 的最终入选项目名单&#xff0c;NFTScan 团队获得了 35k OP 的 Grant 资金支持。 Cycle 14 Final: https://app.charmverse.io/op-grants/page-47078316203750115 作为 Optimism 生态的 NFT 基础设施&…

内网渗透——macOS上搭建Web服务器

# 公网访问macOS本地web服务器【内网穿透】 文章目录 1. 启动Apache服务器2. 公网访问本地web服务2.1 本地安装配置cpolar2.2 创建隧道2.3 测试访问公网地址3. 配置固定二级子域名3.1 保留一个二级子域名3.2 配置二级子域名4. 测试访问公网固定二级子域名 以macOS自带的Apache…

惊艳,这个html5播放器支持视频切换、倍速切换、视频预览

很赞哇&#xff01;&#xff01; 本文将对视频播放相关的功能进行说明&#xff08;基于云平台&#xff09;&#xff0c;包括初始化播放器、播放器尺寸设置、视频切换、倍速切换、视频预览、自定义视频播放的开始/结束时间、禁止拖拽进度、播放器皮肤、控件按钮以及播放控制等。…

使用群晖Synology Office提升生产力:多人同时编辑一个文件

使用群晖Synology Office提升生产力&#xff1a;多人同时编辑一个文件 文章目录 使用群晖Synology Office提升生产力&#xff1a;多人同时编辑一个文件本教程解决的问题是&#xff1a;1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制…

Inbound marketing的完美闭环:将官网作为营销枢纽,从集客进化为入站

Inbound marketing即入站营销的运作方式不同于付费广告&#xff0c;你需要不断地投入才能获得持续的访问量。而你的生意表达内容一经创建、发布&#xff0c;就能远远不断地带来流量。 Inbound marketing也被翻译作集客营销&#xff0c;也就是美国知名的营销SaaS企业hubspot所主…