数据结构笔记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.mfbz.cn/a/708593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为国产加油:“缺芯少屏”暂缓,另一领域,也要加把劲

说起咱中国之前的“缺芯少屏”&#xff0c;真的是让人挺闹心的。 不过呢&#xff0c;为了改变这个状况&#xff0c;咱们的工程师们可是费了不少劲儿&#xff0c;辛辛苦苦努力了数十年。现在好了&#xff0c;咱们也迎来了柔性屏的时代。 柔性屏 说起来&#xff0c;在触摸屏或者…

消费者消费数据时报错:INVALID_REPLICATION_FACTOR

今天部署了kafka集群&#xff0c;三台服务器&#xff0c;启动后&#xff0c;生产者发送数据&#xff0c;消费者接收数据的时候报错&#xff0c;INVALID_REPLICATION_FACTOR。 查了很多资料&#xff0c;说是要改kafka下config目录的server.properties,可能是副本数太小&#xff…

【MATLAB源码-第225期】基于matlab的计算器GUI设计仿真,能够实现基础运算,三角函数以及幂运算。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 界面布局 计算器界面的主要元素分为几大部分&#xff1a;显示屏、功能按钮、数字按钮和操作符按钮。 显示屏 显示屏&#xff08;Edit Text&#xff09;&#xff1a;位于界面顶部中央&#xff0c;用于显示用户输入的表达式和…

Python学习打卡:day05

day5 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day538、函数的初体验39、函数的基础定义语法函数的定义注意事项 40、函数的基础定义案例练习41、函数的传入参数42、函数的传入参数案例练习——升…

python django初步搭建(一)

记录一次简单的python django使用&#xff0c;后续调用api相关的暂时不想写。。。 一、环境 windows python 3.11.7 django 二、初步搭建 2.1 新建空文件夹 为了方便本次记录&#xff0c;新建了一个空的文件夹来使用。 直接在这里输入cmd 然后按下回车 2.2 安装virtual…

Kubernetes集群持久化部署实践

WordPress 网站持久化部署 要持久化MariaDB 可以把 Deployment 改成了 StatefulSet&#xff0c;修改 YAML添加“serviceName”“volumeClaimTemplates”这两个字段&#xff0c;定义网络标识和 NFS 动态存储卷&#xff0c;然后在容器部分用“volumeMounts”挂载到容器里的数据目…

利用three-csg-ts对做物体交互式挖洞

默认物体均为居中&#xff0c;如果指定位置没有发生偏移&#xff0c;可能是因为在执行布尔操作之前没有正确设置变换。确保在进行布尔运算之前应用所有必要的变换。以下是经过修正的完整代码示例&#xff0c;它会确保圆柱正确旋转并与盒子进行 CSG 操作。 安装依赖 首先&…

快捷回复话术分享:如何应对顾客愤怒骂人?

在客服的日常工作中&#xff0c;面对情绪激动、甚至愤怒发泄骂人的顾客是常见的挑战。初入此行业的小伙伴们往往在遭遇顾客的激烈情绪时感到手足无措&#xff0c;不知道如何妥善回应。为此&#xff0c;本文将分享一些实用的快捷回复话术和技巧&#xff0c;帮助新手客服更好地处…

vue聊天发送Emoji表情

在用web端写聊天发送表情的功能中&#xff0c;使用web端有系统自带的unicode表情会出现每端不统一的情况&#xff0c;不好用不能统一&#xff0c;在这里我想到了一个非常好的思路&#xff0c;可以解决这个问题&#xff01; 那就是发送表情用图片的形式呈现&#xff0c;然后发给…

电脑屏幕怎么显示提醒事项 电脑桌面提醒事项设置

在这个信息爆炸的时代&#xff0c;我们每个人都像是被数据洪流裹挟着前进。工作中&#xff0c;生活中&#xff0c;无数琐碎而重要的事情需要我们记忆和处理。有时&#xff0c;仅仅依靠大脑去记住所有事情&#xff0c;真的让人头疼。特别是对于那些整日面对电脑的办公族来说&…

Python基础教程(十一):数据结构汇总梳理

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

使用C#快速搭建一个在windows运行的exe应用

文章目录 一、前言1.1 编写语言需要工具1.2 选择自己需要的组件进行安装 二、新建项目1.1 新建一个 .NET4.x 的项目1.2 添加一个小案例1.3 对界面进行美化1.3.1、配置Form属性1.3.2、配置Button按钮 1.4 查看组将的相关代码 三、后记 一、前言 这是一个比较旧的内容&#xff0…

java调用GDAL及JTS实现生成泰森多边形(Voronoi图)的一种方法

目录 一、关于泰森多边形 1.泰森多边形的特性 2.本文的目的 二、实现思路 1.gdal和jts库的maven坐标 2.jts生成泰森多边形的关键代码 3.使用GDAL读取源文件信息的关键代码 4.使用GDAL将生成的泰森多边形写入文件 三、实现结果 1.实现的效果 2.完整代码示例 一、关于…

【STM32】飞控设计

【一些入门知识】 1.飞行原理 【垂直运动】 当 mg&#xff1e;F1F2F3F4&#xff0c;此时做下降加速飞行 当 mg&#xff1c;F1F2F3F4&#xff0c;此时做升高加速飞行 当 mgF1F2F3F4 &#xff0c;此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…

【CT】LeetCode手撕—200. 岛屿数量

目录 题目1-思路2- 实现⭐200. 岛屿数量——题解思路 3- ACM实现 题目 原题连接&#xff1a;200. 岛屿数量 1-思路 利用 dfs 深搜&#xff0c;遇到岛屿直接将岛屿填充为 0 2- 实现 ⭐200. 岛屿数量——题解思路 class Solution {public int numIslands(char[][] grid) {int …

开源WebGIS全流程常用技术栈

1 数据生产 1.1 uDig uDig&#xff08;http://udig.refractions.net/&#xff09;是一个基于Java开源的桌面应用框架&#xff0c;它构建在Eclipse RCP和GeoTools&#xff08;一个开源的Java GIS包)上。可以进行shp格式地图文件的编辑和查看&#xff1b;是一个开源空间数据查看…

5月产品更新 | 10大更新汇总,快来看看你的需求上线了吗?

5月&#xff0c;Smartbi从客户需求出发&#xff0c;并结合企业在数据分析、处理等方面遇到的问题&#xff0c;对数据模型、数据指标等数十项功能进行了优化升级。 Smartbi用户可以在官网下载下载PC端&#xff0c;更新后便可以使用相关功能&#xff0c;也可以在体验中心体验相关…

mybatis之特殊SQL的执行

1.1模糊查询 尝试&#xff1a; //模糊查询用户 List<User> getUserByLike(Param("mohu") String mohu);<select id"getUserByLike" resultType"user">select * from user where username like %#{mohu}% </select>Test publ…

DP:两个数组的dp问题

解决两个数组的dp问题的常用状态表示&#xff1a; 1、选取第一个字符串[0-i]区间以及第二个字符串[0,j]区间作为研究对象 2、根据题目的要求确定状态表示 字符串dp的常见技巧 1、空串是有研究意义的&#xff0c;引入空串可以帮助我们思考虚拟的边界如何进行初始化。 2、如…

jenkins使用注意问题

1.在编写流水线时并不知道当前处在哪个目录&#xff0c;导致名使用不当&#xff0c;以及文件位置不清楚 流水线任务默认路径是&#xff0c;test4_mvn为jenkins任务名 [Pipeline] sh (hide)pwd /var/jenkins_home/workspace/test4_mvn maven任务也是&#xff0c;看来是一样的…