数据结构笔记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的比较

基数排序
第一轮,按个位排
第二轮,按十位排
第三轮,按百位排,第三轮就是最后结果

相关文章:
数据结构笔记39-48
碎碎念:想了很久,不知道数据结构这个科目最终该以什么笔记方式呈现出来,是纸质版还是电子版?后来想了又想,还是电子版吧?毕竟和计算机有关~(啊哈哈哈哈哈哈哈) 概率论已经更新完了&…...
2-3 基于matlab的NSCT-PCNN融合和创新算法(NSCT-ML-PCNN )图像融合
基于matlab的NSCT-PCNN融合和创新算法(NSCT-ML-PCNN )图像融合。NSSCTest.m文件:用于查看利用NSSC算法分解出的图像并保存。其中的nlevel可调test.m文件:用于产生融合结果,其中一个参数需要设置:Low_Coeffs…...
机器学习笔记 - LoRA:大型语言模型的低秩适应
一、简述 1、模型微调 随着大型语言模型 (LLM) 的规模增加到数千亿,对这些模型进行微调成为一项挑战。传统上,要微调模型,我们需要更新所有模型参数。这也称为完全微调 (FFT) 。下图详细概述了此方法的工作原理。 完全微调FFT 的计算成本和资源需求很大,因为更新每…...
基于python实现视频和音频长度对齐合成并添加字幕
在许多视频编辑任务中,我们常常需要将视频和音频进行对齐,并添加字幕。本文将详细介绍如何使用Python实现这一功能,并在视频中添加中文字幕。我们将使用OpenCV处理视频帧,使用MoviePy处理音频和视频的合成,使用PIL库绘…...
爬虫-模拟登陆博客
import requests from bs4 import BeautifulSoupheaders {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 } # 登录参数 login_data {log: codetime,pwd: shanbay520,wp-submit: …...
【深度学习】【NLP】Bert理论,代码
论文 : https://arxiv.org/abs/1810.04805 文章目录 一、Bert理论BERT 模型公式1. 输入表示 (Input Representation)2. 自注意力机制 (Self-Attention Mechanism)3. Transformer 层 (Transformer Layer) 二、便于理解Bert的代码1. 自注意力机制2. Transformer 层3. …...
element table 点击某一行中按钮加载
在Element UI中,实现表格(element-table)中的这种功能通常涉及到数据处理和状态管理。当你点击某一行的按钮时,其他行的按钮需要动态地切换为加载状态,这可以通过以下步骤实现: 1.表格组件:使用…...
Linux开机自启/etc/init.d和/etc/rc.d/rc.local
文章目录 /etc/init.d和/etc/rc.d/rc.local的区别/etc/init.dsystemd介绍 /etc/init.d和/etc/rc.d/rc.local的区别 目的不同: /etc/rc.d/rc.local:用于在系统启动后执行用户自定义命令,适合简单的启动任务。 /etc/init.d:用于管理…...
DP:两个数组的dp问题
解决两个数组的dp问题的常用状态表示: 1、选取第一个字符串[0-i]区间以及第二个字符串[0,j]区间作为研究对象 2、根据题目的要求确定状态表示 字符串dp的常见技巧 1、空串是有研究意义的,引入空串可以帮助我们思考虚拟的边界如何进行初始化。 2、如…...
嵌入式Linux:格式化I/O
目录 1、格式化输出函数 1.1、printf()函数 1.2、fprintf()函数 1.3、dprintf()函数 1.4、sprintf()函数 1.5、snprintf()函数 2、格式化输入函数 2.1、scanf()函数 2.2、fscanf()函数 2.3、sscanf()函数 在Linux中,格式化I/O(formatted I/O&a…...
【elementui源码解析】如何实现自动渲染md文档-第二篇
目录 1.概要 2.引用文件 1)components.json 2)json-template/string 3)os.EOL 3.变量定义 4.模版填充 5.MAIN_TEMPLATE填充 6.src下的index.js文件 1)install 2)export 7.总结 1.概要 今天看第二个命令no…...
热门开源项目OpenHarmony
目录 1.概述 1.1.开源项目的意义 1.2.开源项目对软件行业的促进作用 1.3.小结 2.OpenHarmony 2.1.技术架构 2.2.分布式软总线 2.2.1.架构 2.2.2.代码介绍 2.2.2.1.代码目录 2.2.2.2.说明 2.2.2.3.发现组网和传输 2.2.2.3.1.发现 2.2.2.3.2.组网 2.2.2.3.3.传输…...
NewspaceAi之GPT使用新体验
GPT功能 使用地址:https://newspace.ai0.cn/ 上车 挂挡 踩油门,一脚到底,开始你的表演 问题1:你能做什么详细告诉我? 下面内容是GPT的回答 当然!作为一个基于GPT-4架构的AI,我能够在许多方面为…...
详解红黑树
红黑树规则 节点是红色或黑色。根节点是黑色。每个叶子节点都是黑色的空节点(NIL节点)。每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 红黑树…...
探索JavaScript逆向工程与风控等级
探索JavaScript逆向工程与风控等级 在当今的网络安全领域,JavaScript逆向工程(简称JS逆向)已成为许多开发者和安全专家关注的焦点。JS逆向主要涉及对JavaScript代码的分析与理解,以发现其内部逻辑、数据流及潜在漏洞。这种技术常用…...
C++ 22 之 立方体案例
c22立方体案例.cpp #include <iostream> #include <string>using namespace std;class Cube{ private:int cube_l; // 长int cube_w; // 宽int cube_h; // 高public:// 设置长void set_l(int l){cube_l 1;}// 设置宽void set_w(int w){cube_w w;}// 设置高void …...
vue2使用antv/g6-editor实现可拖拽流程图
依赖下载 照着这个引入就好,然后npm install 源码 <template><div id"vue-g6-editor"><el-row><el-col :span"24"></el-col></el-row><!-- 工具栏 --><el-row><el-col :span"24&qu…...
springboot学习小结
背景 业务上需要开发,组里一位前辈给我指路 spring基础 什么是spring spring提供一个容器称为spring应用上下文,容器里可以创建和管理组件,组件会在容器里装配好,组件也可以叫bean。 装配不由组件创建他依赖的组件࿰…...
vue聊天发送Emoji表情
在用web端写聊天发送表情的功能中,使用web端有系统自带的unicode表情会出现每端不统一的情况,不好用不能统一,在这里我想到了一个非常好的思路,可以解决这个问题! 那就是发送表情用图片的形式呈现,然后发给…...
360数字安全:2024年4月勒索软件流行态势分析报告
勒索软件传播至今,360 反勒索服务已累计接收到数万勒索软件感染求助。随着新型勒索软件的快速蔓延,企业数据泄露风险不断上升,勒索金额在数百万到近亿美元的勒索案件不断出现。勒索软件给企业和个人带来的影响范围越来越广,危害性…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...








