当前位置: 首页 > news >正文

数据结构【排序】

第七章 排序

在这里插入图片描述

一、排序
1.定义:将无序的数排好序 ;
2.稳定性: Kᵢ和Kⱼ中,Kᵢ优先于Kⱼ那么在排序后的记录中仍然保持Kᵢ优先;
3.评价标准:执行时间和所需的辅助空间,其次是算法的稳定性;空间复杂度是O(1),代表其算法所需的辅助空间不依赖问题规模,则该排序方法为就地排序,否则就是非就地排序;
4.排序的分类:待排序的记录数不太多时为内部排序,反之为外部排序
二、插入排序
1.定义:按关键字大小插入到前面已经排好序的子序列中;
2.直接插入排序:稳定的排序;

  • 性能分析:空间复杂度是O(1);最好的情况时间复杂度为O(n),最坏的时间复杂度为O(n²);
    在这里插入图片描述

3.折半插入排序:是一种稳定的排序算法;有些类似折半查找;时间复杂度为O(n²);但对于数据量比较小排序表,折半插入排序往往能表现出较好的性能;
在这里插入图片描述

4.希尔排序

  • 特点:分组后n值不断减小,关键字较小的记录跳跃式前移;
  • 增量序列取法:无除1外的公因子;最后一个增量值必须为1;不稳定;

三、交换排序
1.定义:系统的交换反序的记录的偶对,直到不再有这样的偶对为止;
2.冒泡排序:时间复杂度T(n)=O(n²);空间复杂度S(n)=O(1);
在这里插入图片描述

3.快速排序 :两指针,选中的指针不动与另一个指针比较,若被比较的数小于选中的指针,就往选中指针的方向移动(也就是不做改变);否则就交换; 当两指针相遇时才完成第一次排序。
在这里插入图片描述

  • 性能分析:时间复杂度是T(n)=O(nlog₂n),最坏情况是O(n²);栈最大深度为[log2n]+1;空间复杂度最坏是O(n);不稳定的算法;

四、选择排序
1.基本思想:每次从当前待排序的记录中选取关键字最小的记录表,然后与待排序的记录序列中的第一个记录进行交换,直到整个记录序列有序为止。

2.简单选择排序:时间复杂度是T(n)=O(n²),空间复杂度是S(n)=O(1);是不稳定的;
在这里插入图片描述

3.排序

  • 定义:基于完全二叉树,分大根堆和小根堆;
  • 结论:排序过程中,若采用的是小根堆,排序后得到的是非递减序列;若采用的是大根堆,则排序后得到的是非递增序列;
  • 堆的调整和筛选:根结点必须小于左右子树,否则要交换;直到第一次全部交换完成输出对顶元素,也就是最小那个,然后将堆底元素送到堆顶,再进行排序交换;一直反复循环,直到堆只剩一个元素为止;
  • 性能分析:时间复杂度是T(n)=O(nlog₂n),空间复杂度是S(n)=O(1);堆排序是不稳定的;

五、归并与基数排序
1.归并排序:时间复杂度为O(m+n);

  • 排序思想:2-路归并排序,两两归并排序使其有序;
  • 性能分析:时间复杂度无论最好还是最坏都是O(nlog₂n);空间复杂度是O(n);归并排序是稳定的;

2.基数排序(桶排序或数字排序):按待排序记录的关键字的组成成分(位)进行排序;

在这里插入图片描述
性能分析:时间复杂度O(d(n+r)),空间复杂度为O(n+r),其中d为关键字位数,每位有r种取值,排序的趟数是d;基数排序是稳定的;

六、各种排序的比较

在这里插入图片描述
在这里插入图片描述

1.记忆方法:时间复杂度:快些归队(快速 归并堆排序)O(nlog₂n);
空间复杂度:快速O(log₂n)归并0(n)基数0(n+r) 其他都为0(1);
稳定性:快些选一堆(快速 希尔 选择 堆排序)是不稳定的;

2.其他细节:经过一次排序,能够保证一个关键字到达最终位置,这样的排序是交换的两类(冒泡、快速)和选择的两种(简单选择 堆);

  • 排序算法的关键字比较次数和原始序列无关–简单选择和折半插入;
  • 排序算法的排序趟数和原始序列有关–交换类的序。

相关文章:

数据结构【排序】

第七章 排序 一、排序 1.定义:将无序的数排好序 ; 2.稳定性: Kᵢ和Kⱼ中,Kᵢ优先于Kⱼ那么在排序后的记录中仍然保持Kᵢ优先; 3.评价标准:执行时间和所需的辅助空间,其次是算法的稳定性&#xf…...

探索APP开发的新趋势:人工智能和大数据的力量

随着5G技术的不断发展,人工智能和大数据将会更加广泛的应用于我们生活和工作中,作为 APP开发公司,应该及时的对新技术进行研发,进而更好的为用户服务。目前 APP开发已经不是传统的软件开发了,而是向移动互联网转型&…...

超越传统:深入比较Bootstrap、Foundation、Bulma、Tailwind CSS和Semantic UI的顶级CSS框架!

探索流行的CSS框架:Bootstrap vs Foundation vs Bulma vs Tailwind CSS vs Semantic UI 在Web开发中,选择适合项目需求的CSS框架可以极大地简化界面设计和响应式布局的工作。本文将详细介绍一些流行的CSS框架,并提供代码示例和比较&#xff…...

基于深度学习淡水鱼体重智能识别模型研究

工作原理为:首先对大众淡水鱼图片进行数据清洗并做标签分类,之后基于残差网络ResNet50模型进行有监督的分类识别训练,获取识别模型。其次通过搭建回归模型设计出体重模型,对每一类淡水鱼分别拟合出对应的回归方程,将获…...

Nginx专题(1)--linux安装nginx

ngixn安装 安装依赖包 yum install gcc yum install pcre-devel yum install zlib zlib-devel yum install openssl openssl-devel 安装nginx 下载nginx的tar包 登录http://nginx.org/en/download.html,下载nginx的Stable version版本,并解压 #执行c…...

系统集成中级计算汇总

基本计算: EV 挣值 (实际完成的工作量) AC 实际发生的花费 PV 计划花费(预算) CV 成本 SV 进度 CV 和 SV 的计算 都是通过EV 减去另一个值 CV EV-AC SV EV-PV 成本 chengben C 开头 所以CV 是成本 CV 中有个C 所以用到的是 AC ,另外一个则是剩余的PV CV SV 计算…...

json.stringify的高级用法,和for of的原理

** /* for of 是用来循环可迭代属性的,如何判断是否是可迭代属性,数据原型链上有个Symbol.iterator说明这个数据是可迭代数据 Symbol.iterator是一个函数,调用此函数,会返回一个对象,对象的内部有一个next函数,调用next函数会返回一个对象这个对象内部有value和done值&#xf…...

SpringCloudAlibaba微服务实战系列(三)Sentinel1.8.0+流控

SpringCloudAlibaba–Sentinel Sentinel被称为分布式系统的流量防卫兵,是阿里开源流量框架,从服务限流、降级、熔断等多个纬度保护服务。Sentinel同时提供了简洁易用的控制台,可以看到接入应用的秒级数据,并可以在控制台设置一些…...

mybatis - no getter for property,以及@JsonIgnore

There is no getter for property named user_full_name in class com.book.erp.entity.user.QueryUser Mybatis 配置错误,XML配置文件有Java对象以及数据库字段,配置时需要小心 user_full_name是数据库字段,不需要有get 和 set方法&#xf…...

云原生周刊:K8s v1.28 中的结构化身份验证配置

开源项目推荐 KubeLinter KubeLinter 是一种静态分析工具,用于检查 Kubernetes YAML 文件和 Helm 图表,以确保其中表示的应用程序遵循最佳实践。 DB Operator DB Operator 减轻了为 Kubernetes 中运行的应用程序管理 PostgreSQL 和 MySQL 实例的痛苦…...

支持向量机概述

支持向量机在深度学习技术出现之前,使用高斯核的支持向量机在很多分类问题上取得了很好的结果,支持向量机不仅用于分类,还可以用于回归问题。它具有泛化性能好,适合小样本和高维特征的优点。 1. SVM引入 1.1支持向量机分类 支持向量机的基本模型是定义在特征空间上的间隔…...

安装x265

一、编译libx265源码 libx265是用CMAKE编译的,故先下cmake,我是centos系统,命令: yum install cmake -y进入目录./x265_1.9/build/linux/下,执行脚本: sh make-Makefiles.bash选择好之后,输入…...

设计模式-观察者模式

一.观察者模式 观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。当对象间存在一对多关系时,则使用观察者模式(Observer Pattern&…...

K8s使用Ceph作为后端存储

Ceph概述 部署Ceph集群 Ceph存储使用 Pod使用Ceph持久化数据 Ceph监控 Rook部署Ceph 1❖ Ceph概述 Ceph介绍 Ceph架构 Ceph核心概念 Ceph介绍 Ceph是一个开源的分布式存储系统,具有高扩展性、高性能、高可靠性等特点,提 供良好的性能、可靠性和可扩展…...

hive整合es,详细过程。

参考官网 Apache Hive integration | Elasticsearch for Apache Hadoop [7.17] | Elastic 官网的介绍很简单,我看了很多博客,写的也很简单,但是我搞了半天才勉强成功,分享下,免得各位多走弯路。 环境准备 官网也很…...

vue中tab隐藏display:none(v-show无效,v-if有效)

目录 背景 原因:display: table-cell>display:none 解决: 方法A.获取元素设置display(适用于 简单场景) 方法B.自定义tabs​​​​​​​ (适用于 复杂场景) 背景 内联样式(style“ ”) /this.$…...

2023年进阶测试,从接口测试到接口自动化测试总结,一篇彻底打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 json模块的使用 …...

客户支持工具从被动到主动的演变

在当日新月异的商业环境中,企业需要适应不断增长的客户需求,优质的客户支持变得越来越重要。客户支持工具从传统系统到尖端 AI驱动解决方案的演变具有变革性,增强了主动和无缝的支持体验。所以,使用正确的客户服务工具很重要&…...

网络安全行业相关证书

一:前言 对于考证这个话题,笔者的意见是:“有比没有好,有一定更好,但不一定必须;纸上证明终觉浅,安全还得实力行”。很多人对于各种机构的考证宣传搞得是云里雾里,不知道网络安全行业…...

[内网渗透]SUID提权

文章目录 [内网渗透]SUID提权0x01.什么是SUID?0x02.如何设置SUID?0x03.查找属主为root的SUID文件0x04.进行SUID提权1.find提权2.vim/vi/vim.tiny 以root权限修改文件3.bash提权4.less/more执行系统命令5.nano以root权限修改文件6.awk执行系统命令7.cp以r…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下&#xf…...