数据结构笔记39-48

碎碎念:想了很久,不知道数据结构这个科目最终该以什么笔记方式呈现出来,是纸质版还是电子版?后来想了又想,还是电子版吧?毕竟和计算机有关~(啊哈哈哈哈哈哈哈)

概率论已经更新完了,不出意料的话,六月末七月初会更新电子技术基础,七月中旬更新计算机组成原理


 数据结构45-4分钟搞定堆排序_哔哩哔哩_bilibili

39-48 

目录

 

排序算法

直接插入排序

折半插入排序  

​编辑

希尔排序 

快速排序

简单选择排序 

堆排序

插入元素:

删除元素:

归并排序

基数排序 


排序算法

直接插入排序

操作流程:

选取19(它是第一个数),并将其作为有序序列

第一轮:

选取35,

并与有序序列(也就是19)进行比较,

35>19,

于是在19的后面。

这样,19和35组成有序序列

 第二轮:

选取9,

并与有序序列(也就是19,35)进行比较,

9<35

9<19

于是9放在19前面。

这样9,19,35组成有序序列

 第三轮:

选取2,

并与有序序列(也就是9,19,35)进行比较,

2<<35

2<19

2<9

于是2放在9前面。

这样2,9,19,35组成有序序列

以此类推,得到最后结果

折半插入排序  

具体看这一步,如何安置15

 1.将15放到初始位置,也就是0的位置

2.low指向第一个元素

3.high指向15原来的位置

4.mid=(1+6)/2=3.5 取3,所以指向3的位置

5.15和17进行比较,15<17

6.high=mid-1,high指向2的位置

7.mid=(1+2)/2=1.5 取1 所以指向1的位置

8.15和2进行比较,2<15

9.low = mid+1,low指向2

low和high相等的时候结束了。所以15插入到后面


这些是另外一种思考方式,因为长课程那里的high不是指向元素15,而是指向元素35。

10.mid=(2+2)/2 ,mid指向2

11.15和2比较,15>2

12.low=mid+1

13.low>high,退出循环

 


希尔排序 

 1.间隔分组,这里有8个,因为为总长度的一半,因此为4组

2.进行组内排序

7<19

22>15

23<25

17>9

 3.再分组,为之前的一半,之前是4组,现在两组

3.进行组内排序

4.再分组,之前是2组,现在就1组

5.组内排序

冒泡排序

比较次数:数组元素-1

 

7和22进行比较

22和23进行比较

23和17进行比较,需要交换

23和19进行比较,需要交换

23和15进行比较,需要交换

最终23被确定,因此第二轮23不需要参与比较

7和22进行比较

22和17进行比较,需要交换

22和19进行比较,需要交换

22和15进行比较,需要交换

最终22被确定,因此第三轮22不需要参与比较

 以此类推

快速排序

1.选取中心轴,一般为首位,这里是元素19 

2.移动high指针,25>19,high指针继续移动,23>19,high指针继续移动,15<19,15拿出来,放到19原本的位置(0索引位置)

  3.移动low指针,9<19,7<19,17<19

5.当low=high时,中心轴被确定

第一轮排序结束

 第二轮:会分别产生两个low,两个high,缩小范围,以此类推进行排序

简单选择排序 

 

1. 在一堆数中找到最小的,13,然后与第一位进行交换

2.在一堆数中找到最小的,27,然后与第二位进行交换

以此类推

堆排序

 

我们调整的是大根堆,所以会把最大值放在根节点,且父节点会大于子节点

8/2-1,所以从3号位置开始调整

97>57,不用调整。

3号调整完了,就调整2号。

2号的父节点大于子节点,因此不用调整。

2号调整完了,就调整1号。

父节点小于子节点,因此取子节点中最大值放在1号位,也就是1,3号位置进行交换

1号调整完了,调整0号节点

父节点大于子节点,因此0,1号位置进行交换,

再看一眼,1号节点小于其子节点,因此将1,4号位置进行交换

最后,根节点为最大值,并且所有的父节点都大于其所拥有的子节点,即算完成

(这里的38和57还要对换一下)

插入元素:

插入85

只需要沿着这个根进行调整就好

85>38,85>76

 

删除元素:

删除堆顶元素97

将最末尾的38放在堆顶,将97拿出来,然后从上到下进行调整

对换的原则是要使得父节点大于子节点

38和其子节点相比,85更大,85和38进行对掉

38和76对掉

38和57对换

归并排序

 

两两进行比较,7和22,23和17,19和15,25和9

然后再进行7和22和23和17的比较,19和15和25和9的比较 

最后进行7和22和23和17和9和15和25和9的比较 

基数排序 

 

第一轮,按个位排 

 第二轮,按十位排

第三轮,按百位排,第三轮就是最后结果

 

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

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

相关文章

代码随想录训练营第八天 151反转字符串中的单词 右旋字符串

第一题&#xff1a; 原题链接&#xff1a;151. 反转字符串中的单词 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 先把首尾的空格去掉&#xff1a;找到第一个不是空格的字符&#xff0c;找到最后一个不是空格的字符。substr字符串为新的字符串t。 使用双指针&…

【Python入门与进阶】Jupyter Notebook配置与优化

目录 1.Jupyter Notebook简介 2.Jupyter Notebook的安装 2.1 命令行安装 2.2 可视化界面安装 3.Jupyter Notebook的使用 3.1 启动 Jupyter Notebook 3.2 Jupyter Notebook 界面介绍 3.3 创建新的 Notebook 3.4 编写和运行代码单元 3.5 使用 Markdown 编写文档 3.6 保…

快慢指针在字符串中的应用-443. 压缩字符串

题目链接及描述 443. 压缩字符串 - 力扣&#xff08;LeetCode&#xff09; 题目分析 这个题目总体不算太难&#xff0c;如果之前接触过双指针&#xff08;快慢指针&#xff09;的话&#xff0c;比较好做。题目可以理解为计算数组中对应各个连续字符出现的次数&#xff0c;并将…

SAPUI5基础知识5 - 控件(control)的使用

1. 背景 在SAPUI5中&#xff0c;控件&#xff08;Control&#xff09;是构建用户界面的基本元素。控件是一个可重用的组件&#xff0c;它可以与用户进行交互或显示信息。 每个控件都有自己的特性&#xff0c;例如属性&#xff08;Properties&#xff09;、聚合&#xff08;Agg…

btrace:binder_transaction+eBPF+Golang实现通用的Android APP动态行为追踪工具

一、简介&#xff1a; 在进行Android恶意APP检测时&#xff0c;需要进行自动化的行为分析&#xff0c;一般至少包括行为采集和行为分析两个模块。其中&#xff0c;行为分析有基于规则、基于机器学习、基于深度学习甚至基于大模型的方案&#xff0c;各有各的优缺点&#xff0c;不…

CentOS 7基础操作14_Linux组账号管理

在5.1.2节学习了管理Linux操作系统中用户账号的相关命令&#xff0c;接下来继续学习组账号管理的相关命令。组账号管理命令的使用相对较少&#xff0c;主要包括groupadd、groupdel、gpasswd等。 对于用户账号来说&#xff0e;对应的组账号可分为基本组和附加组两种类型&#xf…

【AI开发】LangGraph基础

在LangGraph中有三个重要元素 StateGraphNodeEdge StateGraph 首先stategraph是用来描述整个图的&#xff0c;图中的状态会随着多个agent的工作不断的更新&#xff0c;节点node就是用来更新状态的 如何来定义一张图中的状态 每个应用的状态可能不同&#xff0c;所以我们需要…

kettle实时增量同步mysql数据

** 本文主要介绍运用kettle实时增量同步mysql数据 ** Debezium介绍 官网地址&#xff1a;https://debezium.io/documentation/ Debezium是一个开源项目&#xff0c;为捕获数据更改(Capture Data Change,CDC)提供了一个低延迟的流式处理平台&#xff0c;通过安装配置Debeziu…

Aigtek高压功率放大器在超声电机中的应用

超声电机是一种先进的电机技术&#xff0c;常用于各种应用&#xff0c;如医疗成像、工业自动化和汽车技术。这些电机在高速、高精度和低噪音要求的领域中表现出色。在驱动这些超声电机时&#xff0c;高压功率放大器发挥着关键作用。本文将介绍高压功率放大器如何驱动超声电机&a…

腾讯元宝APP:AIGC大模型的新篇章

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透到我们生活的方方面面。腾讯作为国内科技巨头&#xff0c;近期推出的元宝APP更是为AIGC&#xff08;人工智能生成内容&#xff09;市场注入了新的活力。这款大模型产品的上线&#xff0c;不仅丰富…

【kyuubi-spark】从0-1部署kyuubi集成spark执行spark sql到k8s读取iceberg的minio数据

一、背景 团队在升级大数据架构 前端使用trino查询&#xff0c;对trino也进行了很多优化&#xff0c;目前测试来看&#xff0c;运行还算稳定&#xff0c;但是不可避免的trino的任务总会出现失败的情况。原来的架构是trino失败后去跑hive&#xff0c;而hive是跑mapreduce依赖于…

PostgreSQL:在CASE WHEN语句中使用SELECT语句

CASE WHEN语句是一种条件语句&#xff0c;用于多条件查询&#xff0c;相当于java的if/else。它允许我们根据不同的条件执行不同的操作。你甚至能在条件里面写子查询。而在一些情况下&#xff0c;我们可能需要在CASE WHEN语句中使用SELECT语句来检索数据或计算结果。下面是一些示…

c->c++(一):部分KeyWord

本文主要探讨c相关关键字的使用。 char char默认是unsigned/signed取决平台,wchar_t宽字符:用于Unicode编码(超过一个字节),用wcin和wcout输入输出,字符串为wstring char8_t(20),char16_t(11起),char32_t(11):指定占用字节数且是无符号,字符串类u8string,u16s…

Debian 安装 kubernets

Docker环境 添加 Docker 的官方 GPG 密钥 安装 apt 依赖包&#xff0c;用于通过 HTTPS 来获取仓库 sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg2 \software-properties-common -y添加秘钥 curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/li…

python之面向对象(一)

一.类与对象 1.1类和对象的创建 类提供了创建对象的蓝图。对象是类的实例&#xff0c;拥有类中定义的属性和方法。self 参数是对类实例自身的引用&#xff0c;用于访问类的属性和方法。 案例&#xff1a; 下面举一个“长方形”类的例子&#xff0c;包含长&#xff0c;宽属性…

关于对pagination.js源代码进行修改且引入项目使用

实现效果 使用定时器对组件进行每秒请求&#xff0c;每过固定时间之后&#xff0c;进行下一页项目请求&#xff0c;进行到最后一页请求的时候返回第一页。 首先引入js插件 <script src"./js/pagination.js" type"text/javascript"></script>…

Python 中国象棋游戏【含Python源码 MX_011期】

简介&#xff1a; 中国象棋是一种古老而深受喜爱的策略棋类游戏&#xff0c;也被称为中国的国粹之一。它在中国有着悠久的历史&#xff0c;起源可以追溯到几个世纪以前。Python 中国象棋游戏是一个用Python编程语言编写的软件程序&#xff0c;旨在模拟和提供中国象棋的游戏体验…

CVE-2024-23692:Rejetto HFS 2.x 远程代码执行漏洞[附POC]

文章目录 CVE-2024-23692&#xff1a;Rejetto HFS 2.x 远程代码执行漏洞[附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 CVE-2024-23692&#xff1a;Rejetto HFS 2.x 远程代码执行漏洞[附POC] 0x01 前言 …

Elasticsearch:简化数据流的数据生命周期管理

作者&#xff1a;来自 Elastic Andrei Dan 今天&#xff0c;我们将探索 Elasticsearch 针对数据流的新数据管理系统&#xff1a;数据流生命周期&#xff0c;从版本 8.14 开始提供。凭借其简单而强大的执行模型&#xff0c;数据流生命周期可让n 你专注于数据生命周期的业务相关方…

干货!电脑如何录屏?6款win10录屏大师软件深度测评

电脑如何录屏&#xff1f;在2024年&#xff0c;截图或屏幕录制可以说是一种无价的工具。它是捕捉重要信息、与朋友和同事分享说明&#xff0c;或者只是存储您最喜爱的游戏和应用程序中的记忆的好方法。在 Windows 上录制屏幕非常简单。在本篇文章中&#xff0c;我们将讨论在win…