合并两个有序表到新的有序表

2023-11-09

系列目录:

左右移动(旋转)数组元素

查找两个升序数组的中间数

判断数组的某一个元素的数量是否超过了整个数组数量的一半

文图介绍 

将有序数组A和有序数组B合并得有序数组C
A
1 2 3 4 5
B
2 3 4 5 6
C
1 2 2 3 3 4 4 5 5 6

 一、实现算法思想: 

首先,按顺序不断取下两个数组元素的较小值存入新的数组中。然后哪个数组的元素有剩余的,直接添加到新数组的后面,过程描述如下:

A和B较小元素为1,则1存入新表。

C
1

A和B较小元素均为2,随便哪一个存入新表。

C
1 2

以此类推……一直到:

A和B较小元素为5,这里如果存A,此时A已读取完

C
1 2 2 3 3 4 4 5

B还有5和6,则直接放入新表的后面即可

C
1 2 2 3 3 4 4 5 5 6
完成合并!!!

提示:自己动手画图后思路更加清晰 ! 

二、实现代码  

bool Del_s_t(SqList A, SqList2 B, SqList3& C) {
	if (A.length + B.length > C.maxSize)//不能大于顺序表最大长度
	{
		return false;
	}
	int i = 0, j = 0, k = 0;
	while (i < A.length && j < B.length)//两两比较,较小值存入新表
	{
		if (A.data[i] <= B.data[j])
		{
			C.data[k++] = A.data[i++];
		}
		else
		{
			C.data[k++] = B.data[j++];
		}
	}
	//剩余的添加到新表
	while (i < A.length)
	{
		C.data[k++] = A.data[i++];
	}
	while (j < B.length)
	{
		C.data[k++] = B.data[j++];
	}
	C.length = A.length + B.length;
	return true;
}

三、运行结果 

自己敲!!!

四、总结 

以上就是本章要讲的内容,本文简单介绍两个有序数组的合并,提供了能使我们快速便捷地思路和方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并两个有序表到新的有序表 的相关文章

  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • vben:vue3后台管理项目框架

    前言 Vue Vben Admin 是一个基于 Vue3 0 Vite Ant Design Vue TypeScript 的后台解决方案 目标是为开发中大型项目提供开箱即用的解决方案 包括二次封装组件 utils hooks 动态菜单 权
  • c++ const & constexpr c++98 c++11 c++14

    文章目录 c const 和 constexpr 知识点总结 一 const 1 const修饰变量 修饰普通变量 常量 修饰指针类型 修饰引用类型 2 const修饰函数 const修饰函数参数 const修饰函数返回值 const修饰成
  • 接口超时分析

    原文 接口突然超时 1 网络异常 1 1 网络抖动 经常上网的我们 肯定遇到过这样的场景 大多数情况下我们访问某个网站很快 但偶尔会出现网页一直转圈 加载不出来的情况 有可能是你的网络出现了抖动 丢包了 网页请求API接口 或者接口返回数据
  • Ubuntu16.04下caffe安装编译全过程(CPU)

    caffe是深度学习最好用的框架之一 但caffe的安装编译过程相对较复杂 本人在安装编译时百度了好几个版本 都没有一次成功过 因此在此总结一下自己的编译过程 本文是在Ubuntu16 04下安装编译caffe 其他版本会略有不同 该教程本
  • com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl.

    问题 IDEA调试JDBC出错 com alibaba druid support logging JakartaCommonsLoggingImpl error create connection SQLException url jdb
  • 外包测试3年,离职后成功入职阿里,拿到offer的那天我泪目了...

    一提及外包测试 大部分人的第一印象就是 工作强度大 技术含量低 没有归属感 外包工作三年总体感受就是这份工作缺乏归属感 心里总有一种落差 进步空间不大 接触不到核心技术 公司没有针对你的技术培训与探究 工作简单 业务重复 通常是工具人的存在
  • QDockWidget布局方式

    上图为DockWidget多控件效果图 QDockWidget dock QLatin1String Last filters QWidget multiWidget new QWidget QVBoxLayout layout new Q
  • oracle生成不同uuid,oracle生成uuid

    select sys guid from dual gt 78AE331ADB2B4CE7AB598B1317B39D58 但该函数如下问题 1 返回类型为RAW 2 没有 dash 分隔符 3 返回的字母大写 为了使产生的uuid符合rf
  • vue3之createApp分析

    函数定义 createApp函数定义在文件 packages runtime dom src index ts中 export const createApp args gt const app ensureRenderer createA
  • Python 贝叶斯在文本分类的应用案例

    关注微信公共号 小程在线 关注CSDN博客 程志伟的博客 1 1 文本编码技术简介 1 1 1 单词计数向量 在开始分类之前 我们必须先将文本编码成数字 一种常用的方法是单词计数向量 在这种技术中 一个样本可以包 含一段话或一篇文章 这个样
  • 10种排序算法总结(Python 版)

    文章目录 1 冒泡排序 O n 2 2 快速排序 O nlogn 3 简单插入排序 O n 2 4 希尔排序 O n log n 5 简单选择排序 O n 2 6 堆排序 O n log n 7 归并排序 O n log n 8 计数排序
  • 解决keil5编译报错 undefined symbol

    在编译keil5 工程时出现报错 xxx axf Error L6218E Undefined symbol xxx referred from xxxo 正常情况下遇到Undefined symbol问题根据经验有以下几种原因 1 c文件
  • pinia实现持久化存储

    pinia的作用是什么 Pinia 是 Vue 的存储库 它允许您跨组件 页面共享状态 如果您熟悉 Composition API 您可能会认为您已经可以通过一个简单的 export const state reactive 这对于单页应用
  • 论文笔记--Attention is all you need

    Attention is all you need transformer模型 摘要 当前的序列转录模型基于encoder和decoder的循环或卷积神经网络 较好的做法是在encoder和decoder中间加入一个注意力机制 我们提出了一
  • 使用Spyder,导入tensorflow以及相关库出现kernel died等问题的解决方法

    自从使用了Spyder之后 感觉腰不算了 腿不疼了 走路都带风了 呵呵 好吧 那是之前 使用Spyder给我的感觉就好像一台快报废的电脑重新装了系统一样 刚开始顺风顺水 可是后来就发现毕竟是老年机 容易出现个什么白内障 风湿病什么的 做一些
  • 离散数学:数学语言与证明方法(练习题)

    练习1 1 判断下列命题是真是假 1 x x 答 假 x 并不是 x 元素 2 x x 答 真 x 是 x 子集 3 x x 答 真 x 是 x 元素 4 x x 答 假 x 不是 x 子集 5 x 答 真 是 x 元素但不是任何集合元素
  • SpringBoot:构建一个SpringBoot项目

    文章目录 一 创建项目 1 点击 File gt Project 2 选择 Spring Initializr 3 填写项目基本信息 5 目录结果 6 pom xml 依赖 7 主函数入口 二 项目启动 测试 三 项目源码 SpringBo
  • MongoDB常见问题

    问题一 还原报错 root mongodb bin mongorestore h 127 0 0 1 27017 d runoob directoryperdb data db runoob 2022 12 19T19 47 23 909
  • [LeetCode-21]-Merge Two Sorted Lists(有序列表合并)

    文章目录 题目相关 Solution 不带头结点 增加头结点 使用递归 题目相关 题目解读 合并两个有序列表 并返回新列表 原题描述 原题链接 Merge two sorted linked lists and return it as a
  • 合并两个有序表到新的有序表

    系列目录 左右移动 旋转 数组元素 查找两个升序数组的中间数 判断数组的某一个元素的数量是否超过了整个数组数量的一半 文图介绍 将有序数组A和有序数组B合并得有序数组C A 1 2 3 4 5 B 2 3 4 5 6 C 1 2 2 3 3