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

news/2024/5/17 16:45:52 标签: 算法, 数据结构, 归并排序

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

算法思路:
这个其实就是一个归并排序,我们这里两顺序表为升序,要合并成一个升序表
用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.niftyadmin.cn/n/5124123.html

相关文章

物联网数据采集网关连接设备与云平台的关键桥梁

随着工业4.0和智能制造的快速发展&#xff0c;物联网数据采集网关在工业物联网中的应用越来越广泛。物联网数据采集网关作为连接设备与云端之间的关键桥梁&#xff0c;能够实现高效、可靠、安全的数据传输和转换&#xff0c;为智能制造和工业4.0提供了强大的支持。 一、物联网…

Android 13.0 SystemUI状态栏屏蔽掉通知栏不显示通知

1.概述 在13.0的系统产品开发中,在SystemUI定制化开发中,有产品需求要求屏蔽通知显示,由于对状态栏的通知管控的比较严,所以要求屏蔽掉通知栏的通知不显示通知 接下来就需要对通知栏的显示流程分析,屏蔽掉通知就可以了 2.SystemUI状态栏屏蔽掉通知栏不显示通知的核心类 f…

[学术常识积累] Core评级,CCF评级,DBLP,wikicfp

最近在毕业设计开题阶段&#xff0c;会接触到很多学术知识&#xff0c;虽然以前也接触过&#xff0c;但是之前没有整理&#xff0c;现阶段希望遇到什么就整理下来 文章目录 DBLPCCF评级CORE会议排名wikicfp DBLP DBLP是一个计算机科学领域的文献数据库系统&#xff0c;以作者为…

linux PELT算法中的load计算

滑窗平均的累加计算 权重y按滑窗距离衰减&#xff0c;y^32 0.5&#xff0c;也就是经历32个周期将衰减一半的权重&#xff0c;假设本周期值是&#xff36;&#xff0c;本周期的加权累加值为&#xff36;x&#xff0c;则&#xff1a; 一个完整周期是T&#xff0c;给一个基础值1…

支付宝支付接入流程

一、 接入准备 支付宝支付流程没有微信那么复杂&#xff0c;而且支付宝支持沙箱。登录支付宝开放平台控制台 点击开发工具中的沙箱 接口加密方式&#xff0c;我这里使用的是自定义密钥。生成密钥的方式 使用支付宝官方提供的密钥工具&#xff0c;唯一要注意的是支付宝密钥工具…

fastboot刷写老是失败的问题

帮朋友的项目调个功能&#xff0c;可以出系统rom的包&#xff0c;包括了windows的刷写脚本 老是在fastboot刷写 system.img的时候失败&#xff0c;后来换成mfastboot刷写&#xff0c;也老是失败 不得已想到在ubuntu下看看&#xff0c;至少能够刷写成功&#xff0c;虽然有一定…

Uni-app智慧工地可视化信息平台源码

智慧工地的核心是数字化&#xff0c;它通过传感器、监控设备、智能终端等技术手段&#xff0c;实现对工地各个环节的实时数据采集和传输&#xff0c;如环境温度、湿度、噪音等数据信息&#xff0c;将数据汇集到云端进行处理和分析&#xff0c;生成各种报表、图表和预警信息&…

【I2C】常见的I2C外设

获取更多相关的笔试面试题&#xff0c;可收藏系列博文&#xff0c;持续更新中&#xff1a;C语言|BSP开发|嵌入式软件|Linux驱动|笔试面试题汇总帖 面试被问到做过哪些I2C外设&#xff1f;把相关信息整理下&#xff0c;做一个归纳。 I2C总线&#xff1a; I2C -- I2C总线详解_i2…