数据结构-排序思想
直接插入排序
将后面的无序区中的元素挨个向前面的有序区中插入。
1.将顺序表中R[0]用作哨兵,按索引i=2...n的次序,将R[i]向有序区R[1...i-1]中执行插入操作。
2.插入操作可采取在有序区中从后向前的查找比较和移动的方法。
3.此操作中比较的次数与原序列的排列状态有关:
原序列为正序时在插入操作中插入位置为尾部即只需要比较一次;
原序列为反序时插入位置为头部则需要和有序序列中的每个元素比较一次。
时间复杂度:正序时O(n),反序时 O(n²),平均时间复杂度 O(n²)
空间复杂度:O(1),就地排序
直接插入排序是稳定的。
希尔排序(分组插入排序)
1.把序列分为d个组,分组方法为所有距离为d的元素划到一个组内。
2.各组内进行直接插入排序。
3.按照避免增量序列中的值互为倍数,及最后一个增量必须为1的原则,设定增量序列d。
希尔排序是不稳定的。
冒泡(交换)排序
1.从下面无序区的最底部元素开始向上两两比较,最小者交换到无序区的最顶部,它同时也处了在有序区的最底部。
2.当某一趟扫描中的两两比较未出现交换,则说明无序区已全部有序,排序结束。
时间复杂度:正序时O(n),反序时 O(n²),平均时间复杂度 O(n²)
空间复杂度:属于就地排序
冒泡排序是稳定的。性能低于直接插入排序。
快速(交换)排序(基准分冶)
1.确定基准
在区间R中可随机选择一个元素作为基准,和R[0]交换位置。
2.对比划分
以R[0]作为基准做一趟划分操作:从区间两端开始向中间依次交替与基准比较大,根据小在左侧、大在右侧的规则与基准交换位置,最终生成比基准值小和大的左右两个无序的子区间。
3.递归
对每个子区间递归定基准-划分过程。
划分操作结果中有一个子区间为空,及两个子区间都不为空,这两种情况比较,前者整体排序中做的比较次数更多。
时间复杂度:最好 O(nlgn),最坏 O(n²),平均 O(nlgn)
空间复杂度:O(lgn)
快速排序是不稳定的。
直接选择排序
1.从后面的无序区中选择最小的元素,与无序区头部元素交换,即有序区末尾增加一个元素。
2.对新的有序区和无序区执行上一步操作。
时间复杂度:O(n²)
空间复杂度:O(1),就地排序
直接选择排序是不稳定的。
插入排序是先在指定位置取元素,然后再找合适的位置插入,重心在第二步的插入。
选择排序是先找最小的元素,然后交换到指定位置,重心在第一步的选择。
堆排序(树形选择排序)
调整堆(筛选):判断调整根子树,将根与两个孩子中较大者(大根堆)交换,继而判断调整有变动的子子树。
1.构造堆
从下往上依次对位置为[n/2]...1为根的子树做调整堆操作。
结果构造出了堆,此时只是符合堆性质,但并不有序。
2.将堆根元素交换到无序区尾部。
i为本次调整的序号,将堆顶元素R[1]和最后一个元素R[n-i+1]交换,则新的无序区变为R[1...n-i],有序区为R[n-i+1,n]。
3.重建堆
对新的无序区判断调整堆。
4.重复2、3步骤共n-1次。
时间复杂度:O(nlgn)
空间复杂度:O(1),就地排序
堆排序是不稳定的。
归并排序(二路归并排序)
1.将区间内的元素两两做二路归并。
2.将上一步形成的各个有序组两两做二路归并。
3.直至全部元素进入同一个有序组。
4.二路归并需要同等的辅助空间。
时间复杂度:O(nlgn)
空间复杂度:O(n),
归并排序是稳定的。
以上基于关键字比较的排序时间下限是O(nlgn),而分配排序无须比较关键字,通过分配和收集过来实现排序,它们的时间复杂度可以下破到线性阶O(n)。
箱排序(桶排序)
分配排序不基于关键字比较,而是通过分配和收集过程实现排序。时间复杂度可达线性阶。
第一种箱排序是设置箱子个数和关键字的种类的个数相同;
第二种桶排序是关键字映射到某个桶中,桶中的所有元素再单独做关键字比较排序
基数排序
基数排序要求分析关键字的结构,分为多关键字和单关键字,每个关键字又由多个位组成。
单关键字的每位即每个分量可能取值个数称为基数,
基数排序是按基数的个数次数从低位到高位对序列元素进行箱排序,每箱排序的结果作为下一趟排序的输入。
基数排序是稳定的。
相关文章:
数据结构-排序思想
直接插入排序 将后面的无序区中的元素挨个向前面的有序区中插入。 1.将顺序表中R[0]用作哨兵,按索引i2...n的次序,将R[i]向有序区R[1...i-1]中执行插入操作。 2.插入操作可采取在有序区中从后向前的查找比较和移动的方法。 3.此操作中比较的次数与原序列…...
python 快速排序(Quick Sort)
快速排序(Quick Sort) 快速排序是一种高效的排序算法,采用分治法(Divide and Conquer)策略。它的基本思想是:选择一个基准元素(pivot),将数组分为两部分,使得…...
MySQL数据库——常见慢查询优化方式
本文详细介绍MySQL的慢查询相关概念,分析步骤及其优化方案等。 文章目录 什么是慢查询日志?慢查询日志的相关参数如何启用慢查询日志?方式一:修改配置文件方式二:通过命令动态启用 分析慢查询日志方式一:直…...
【AIGC篇】AIGC 引擎:点燃创作自动化的未来之火
:羑悻的小杀马特.-CSDN博客 未来都是惊喜。你生来本应为高山。并非草芥。 引言: 在当今数字化的时代,人工智能生成内容(AIGC)正以一种前所未有的力量改变着我们的创作领域。它就像一个神秘而强大的魔法师,…...
C语言性能优化:从基础到高级的全面指南
引言 C 语言以其高效、灵活和功能强大而著称,被广泛应用于系统编程、嵌入式开发、游戏开发等领域。然而,要写出高性能的 C 语言代码,需要对 C 语言的特性和底层硬件有深入的了解。本文将详细介绍 C 语言性能优化的背后技术,并通过…...
常用的公共 NTP(网络时间协议)服务器
公共 NTP 服务列表 以下是一些常用的公共 NTP(网络时间协议)服务器,供您参考: 中国地区公共 NTP 服务器 国家授时中心 NTP 服务器:ntp.ntsc.ac.cn中国 NTP 快速授时服务:cn.ntp.org.cn阿里云公共 NTP 服务…...
Kafka中的Topic和Partition有什么关系?
大家好,我是锋哥。今天分享关于【Kafka中的Topic和Partition有什么关系?】面试题。希望对大家有帮助; Kafka中的Topic和Partition有什么关系? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Apache Kafka 中&#…...
Unity 使用UGUI制作卷轴开启关闭效果
视频效果 代码 using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options;public class JuanZhou : MonoBehaviour {[SerializeField]private …...
MarkDown怎么转pdf;Mark Text怎么使用;
MarkDown怎么转pdf 目录 MarkDown怎么转pdf先用CSDN进行编辑,能双向看版式;标题最后直接导出pdfMark Text怎么使用一、界面介绍二、基本操作三、视图模式四、其他功能先用CSDN进行编辑,能双向看版式; 标题最后直接导出pdf Mark Text怎么使用 Mark Text是一款简洁的开源Mar…...
整合版canal ha搭建--基于1.1.4版本
开启MySql Binlog(1)修改MySql配置文件(2)重启MySql服务,查看配置是否生效(3)配置起效果后,创建canal用户,并赋予权限安装canal-admin(1)解压 canal.admin-1…...
QGIS移动图元功能
有时需要在QGIS里面移动一些矢量图层,比如图层的地理配准,网上搜了一些资料没有查看,后来仔细找了下,在编辑-编辑几何图形-移动要素里面,可以移动图层。 注意:移动前先要选择上要移动的图层,之…...
【模电刷题复习--填空】
如有错误,欢迎各位大佬在评论区批评指正 模电刷题 一、填空题1.本征半导体中,若掺入微量的__五__价元素,则形成___n___型半导体,其多数载流子是自由电子,若掺入微量的__三__价元素,则形成__p__型半导体。其…...
shardingsphere-jdbc-core-spring-boot-starter的性能问题(理论)
hardingSphere-JDBC-core-spring-boot-starter 是 ShardingSphere 提供的与 Spring Boot 集成的模块,用于实现数据库的分库分表等功能。在性能方面,它既有优势也存在一定的挑战,以下是具体分析: 优势方面 数据分片提升查询性能 通…...
Java Map 集合详解:基础用法、常见实现类与高频面试题解析
在 Java 集合框架中,Map 是用于存储键值对(Key-Value)的重要接口,广泛应用于开发中的各种场景。本文将详细讲解 Map 的基础概念、常见实现类及其特性,并结合代码示例和高频面试问题,帮助你深入理解 Map 的用…...
一款基于.Net方便、快捷的数据库文档查询、生成工具
项目介绍 SmartSQL 是一款方便、快捷的数据库文档查询、导出工具!从最初仅支持SqlServer数据库、CHM文档格式开始,通过不断地探索开发、集思广益和不断改进,又陆续支持Word、Excel、PDF、Html、Xml、Json、MarkDown等文档格式的导出。同时又…...
Linux平台下实现的小程序-进度条
目录 1.换行、回车概念 2.缓冲区 2.1缓冲区 2.2强制刷新 3.进度条程序 Makefile文件 ProgressBar.h ProgressBar.c Main.c 执行结果 1.换行、回车概念 /n:换行回车(\r:回车) 2.缓冲区 如下图在vim编辑器中的命令模式下…...
Ubuntu 22.04.5 修改IP
Ubuntu22.04.5使用的是netplan管理网络,因此需要在文件夹/etc/netplan下的01-network-manager-all.yaml中修改,需要权限,使用sudo vim或者其他编辑器,修改后的内容如下: # Let NetworkManager manage all devices on …...
解决virtualbox出现开启DHCP之后ubuntu虚拟机之后IP重复的问题
找遍了国内论坛,没一个能解决该问题的,所以我自己写个文章吧,真讨厌那些只会搬运的,污染国内论坛环境,搜一个问题,千篇一律。 问题 操作系统版本为"Ubuntu 24.04 LTS" lennytest1:~$ cat /etc…...
Java开发工具-Jar命令
Java开发工具-Jar 1、jar命令全平台使用 2、jar命令的作用 为类和资源创建存档,并从存档中操作或恢复单个类或资源 3、摘要 jar [OPTION …] [ [–release VERSION] [-C dir] files] … 4、jar命令描述 jar命令通常作为用于压缩与解压的工具,基于ZIP或Z…...
UE5通过蓝图节点控制材质参数
通过蓝图节点控制材质的参数 蓝图节点 在材质上设置标量值 和 在材质上设置向量参数值 Set Scalar Parameter Value on Materials Set Vector Parameter Value on Materials 这两个蓝图节点都可以在蓝图中,控制材质的参数值和向量值...
谷歌外链怎么发?靠1种图文形式自动吸引外链
写外链一直是SEO里最耗体力的活。很多公司招了三个实习生,每天坐在电脑前发几百封开发信,回复率往往不到0.5%。到了2026年,谷歌的算法已经能识别出绝大多数带有“交换”性质的人为链接。现在的行情是,想要稳住排名,得让…...
Envoy 详解:云原生时代的高性能网络代理
Envoy 详解:云原生时代的高性能网络代理 文章目录Envoy 详解:云原生时代的高性能网络代理前言核心特性架构与设计哲学核心组件与术语xDS 协议:动态配置的基石主要使用场景与其他代理的对比(Envoy vs Nginx)部署模式与未…...
别再只用Telnet了!手把手教你给思科路由器配置SSH远程登录(附Packet Tracer验证)
从Telnet到SSH:思科路由器安全远程管理实战指南 每次看到运维同事用Telnet登录路由器时,我都忍不住想提醒——这就像在咖啡馆用明信片写密码。作为从业十年的网络工程师,我见过太多因Telnet导致的安全事故。本文将用Packet Tracer带您完成从T…...
告别传统知识蒸馏:用CVPR2022的‘逆向蒸馏’在PyTorch里玩转工业异常检测
工业级异常检测实战:基于CVPR2022逆向蒸馏的PyTorch实现指南 当传统知识蒸馏在工业缺陷检测中遭遇瓶颈——学生网络对异常样本产生"幻觉响应"、模型对微小缺陷敏感度不足、复杂纹理场景下误报率飙升——CVPR2022提出的逆向蒸馏架构犹如一剂精准的手术刀。…...
终极浏览器资源嗅探指南:解锁网页媒体捕获的完整方案
终极浏览器资源嗅探指南:解锁网页媒体捕获的完整方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容无处不在的今天&#x…...
DeepSeek SSO权限同步失效深度复盘(附完整日志追踪链路图)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek SSO权限同步失效深度复盘(附完整日志追踪链路图) 问题现象与影响范围 2024年10月17日 02:48 UTC,DeepSeek内部SSO系统(基于Keycloak 22.0.5&am…...
从蓝图到落地:基于IEEE 830标准构建数字化车间需求规格说明书
1. 为什么数字化车间需要IEEE 830标准? 在汽车制造车间推进数字化转型时,我见过太多团队一上来就急着写代码、买设备,结果系统上线后才发现功能与业务脱节。这时候IEEE 830标准就像一份施工蓝图,它能帮我们把模糊的"数字化愿…...
GIFT高级技巧:图像组合、并行处理和性能优化的终极指南
GIFT高级技巧:图像组合、并行处理和性能优化的终极指南 【免费下载链接】gift Go Image Filtering Toolkit 项目地址: https://gitcode.com/gh_mirrors/gi/gift GIFT(Go Image Filtering Toolkit)是一个强大的Go语言图像处理库&#x…...
cstore_fdw迁移指南:从传统表到列式存储的无缝切换
cstore_fdw迁移指南:从传统表到列式存储的无缝切换 【免费下载链接】cstore_fdw Columnar storage extension for Postgres built as a foreign data wrapper. Check out https://github.com/citusdata/citus for a modernized columnar storage implementation bui…...
Kafka-UI:3分钟快速上手,轻松管理你的Apache Kafka集群
Kafka-UI:3分钟快速上手,轻松管理你的Apache Kafka集群 【免费下载链接】kafka-ui Open-Source Web UI for managing Apache Kafka clusters 项目地址: https://gitcode.com/gh_mirrors/kaf/kafka-ui 你是否曾经为管理Apache Kafka集群而头疼&…...
