【数据结构】排序算法复杂度 及 稳定性分析 【图文详解】

排序算法总结

  • 前言
  • [ 一 ] 小数据基本排序算法
    • (1)冒泡排序
    • (2)直接插入排序
  • [ 二 ] (由基本排序衍生的用作)处理大数据处理排序
    • (1)堆排序
    • (2)希尔排序
  • [ 三 ] 大数据速度排序方法
    • (1)快速排序
    • (2)归并排序
  • [ 四 ] 极致速度的整型数据类型的排序
    • (1)计数排序
  • [ 五 ] 其他排序
    • (1)基数排序:一位一位比较
    • (2)桶排序
  • 一、各排序算法的分析和比较
      • 内排序:内存中排序
      • 外排序:在磁盘中排序 【数据太多,内存放不下,转存磁盘了】
  • 二、归并排序 外排序算法思路详解
  • ☆三、稳定性 概念讲解
    • 稳定性的意义 及 实际应用:
  • 四、排序算法复杂度 及 稳定性分析
  • 总结



前言

前面给大家讲述了各大排序算法的原理、思路以及实现步骤、代码码源,下面让我们来对比一下各大排序之间的算法复杂度以及稳定性分析优劣,加深我们对于各排序算法的理解,帮助我们以后能更快的在具体场景下选择出最适的排序算法。



[ 一 ] 小数据基本排序算法

(1)冒泡排序

【数据结构】冒泡排序 (码源实现)

(2)直接插入排序

【数据结构】插入排序


[ 二 ] (由基本排序衍生的用作)处理大数据处理排序

(1)堆排序

【数据结构】堆排序(C代码实现 码源)

(2)希尔排序

【数据结构】希尔排序


[ 三 ] 大数据速度排序方法

(1)快速排序

【数据结构】深入浅出理解快速排序背后的原理 以及 版本优化【万字详解】(C语言实现)

(2)归并排序

【数据结构】归并排序 的递归实现与非递归实现


[ 四 ] 极致速度的整型数据类型的排序

(1)计数排序

【数据结构】深入浅出讲解计数排序【图文详解,搞懂计数排序这一篇就够了】



[ 五 ] 其他排序

(1)基数排序:一位一位比较

(2)桶排序

这两种在这里不过多赘述,因为不如前面的高级排序更好,更加适用



一、各排序算法的分析和比较

在这里插入图片描述

内排序:内存中排序

外排序:在磁盘中排序 【数据太多,内存放不下,转存磁盘了】

  • 磁盘一大特点:
    1. 顺序读 顺序写
    2. 不像内存那样支持下标访问,所以外排序会非常慢

归并排序既可以在内存中排序(内排序),也可以在磁盘中排序(外排序)

二、归并排序 外排序算法思路详解

在这里插入图片描述



☆三、稳定性 概念讲解

相同的数据排序后,相对位置是否变化

稳定性的意义 及 实际应用:

如考试中,考试排名取前三名,先交卷用时少的,成绩先进入数组
排名中成绩高排优先级更高,若成绩相同时,用时少的优先级更高

或 总分相同的,数学更高的优先级更高。
在这里插入图片描述
这经常应用于 结构体排序用结构体指针按某一项去进行比较


四、排序算法复杂度 及 稳定性分析

  • 直接插入排序 稳 遇到相等的就不再往前移了
    • 归并排序 不稳改稳
      在这里插入图片描述
      在这里插入图片描述
      多为 结构体指针 谈稳定性,计数排序谈稳定性无价值。


总结

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

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

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

相关文章

unity中移动方案--物理渲染分层

一、三种基本移动方案 unity中的移动分为Transform和Rigidbody以及CharacterController,其中CharacterController功能完善,已经可以避免了穿墙,并实现了贴墙走等情况,需要结合性能考虑选择不同的方式。 1.使用transform,直接修改…

鳄鱼指标的3颜色线都代表什么?澳福官网一段话明白了

投资者一直在使用鳄鱼指标进行交易,但是对指标上面的3种颜色的K线都代表什么不明白?直到看到澳福官网一段话才明白,原来这么简单! 鳄鱼指标,这一工具是由三条移动平均线组合而成。具体来说,蓝线&#xff0…

Spring Boot 3系列之-启动类详解

Spring Boot是一个功能强大、灵活且易于使用的框架,它极大地简化了Spring应用程序的开发和部署流程,使得开发人员能够更专注于业务逻辑的实现。在我们的Spring Boot 3系列之一(初始化项目)文章中,我们使用了Spring官方…

桶装水订水系统水厂送水小程序开发;

桶装水小程序正式上线,支持多种商品展示形式,会员卡、积分、分销等功能; 开发订水送水小程序系统,基于用户、员工、商品、订单、配送站和售后管理模块,对每个模块进行统计分析,简化了分配过程,提…

【教3妹学编程-算法题】最大单词长度乘积

3妹:哇,今天好冷啊, 不想上班。 2哥:今天气温比昨天低8度,3妹要空厚一点啊。 3妹 : 嗯, 赶紧把我的羽绒服找出来穿上! 2哥:哈哈,那倒还不至于, 不过气温骤降&…

【简朴PlainApp】通过浏览器就能管理手机文件的开源利器

简朴PlainApp 简朴是一个开源应用,允许您通过网络浏览器管理您的手机。您可以通过安全、易于使用的网络界面从桌面访问文件、视频、音乐、联系人、短信、通话记录等等! 这对于手机上文件较多的朋友来说,从任意电脑上管理手机文件的需求还是挺…

详解IPD需求分析工具$APPEALS

够让企业生存下去的是客户,所以,众多企业提出要“以客户为中心”,那如何做到以客户为中心?IPD中给出的答案是需求管理。 需求管理流程,是IPD(集成管理开发)体系中的四大支撑流程之一&#xff0…

【源码解析】Spring Bean定义常见错误

案例1 隐式扫描不到Bean的定义 RestController public class HelloWorldController {RequestMapping(path "/hiii",method RequestMethod.GET)public String hi() {return "hi hellowrd";}}SpringBootApplication RestController public class Applicati…

基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小

文章目录 基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小 基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小 主要修改一个地方就行 代码源码路径 frameworks/base/co…

python df.apply()函数

DataFrame.apply(func, axis0, rawFalse, result_typeNone, args(), by_row‘compat’, kwargs) 沿df的轴应用函数 func:对每行或者每列应用的函数axis{0 or ‘index’, 1 or ‘columns’}, default 0 0是列,1是行 rawbool, default False result_type**{‘expand…

单通道低压 H 桥电机驱动芯片AT9110H 兼容L9110 马达驱动芯片

H桥直流电机驱动电路是一种用于控制直流电机运转的电路,其主要特点是可以实现正反转控制,控制电机转速和方向,同时也具有过流保护功能。 H桥电路由四个功率晶体管和一些辅助电路组成,其中两个晶体管用于控制电机正转,…

【Linux】Nignx及负载均衡动静分离

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《微信小程序开发实战》。🎯&#x1f3a…

BGF-YOLO | 增强版YOLOV8 | 用于脑瘤检测的多尺度注意力特征融合

基于You Only Look Once(YOLO)的目标检测器在自动脑瘤检测中展现出卓越的准确性。在本文中,我们开发了一种新的BGF-YOLO架构,通过将双层路由注意力(BRA)、广义特征金字塔网络(GFPN)和第四检测头整合到YOLOv8中来实现。BGF-YOLO包含了一个注意力机制,用于更加关注重要的…

下载树莓派对应的64位Ubuntu系统步骤

说点废话:因为ros2需要安装在64位Ubuntu上面,所以安装64位最合适; 第一步打开https://cn.ubuntu.com/ 网站;选择下载--->iot----> 选择这个镜像文件下载。我觉得镜像文件是img格式的,跟iso文件区别是&#xff…

【Linux】 JumpServer 堡垒机远程访问

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpS…

基于北方苍鹰算法的无人机航迹规划-附代码

基于北方苍鹰算法的无人机航迹规划 文章目录 基于北方苍鹰算法的无人机航迹规划1.北方苍鹰搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用北方苍鹰算法来优化无人机航迹规划。 …

VERT900 Antenna

782773-01 VERT900 Vertical Antenna (824-960 MHz, 1710-1990 MHz) Dualband Includes one VERT900 824 to 960 MHz, 1710 to 1990 MHz Quad-band Cellular/PCS and ISM Band omni-directional vertical antenna, at 3dBi Gain.

LazyVim: 将 Neovim 升级为完整 IDE | 开源日报 No.67

curl/curl Stars: 31.5k License: NOASSERTION Curl 是一个命令行工具,用于通过 URL 语法传输数据。 核心优势和关键特点包括: 可在命令行中方便地进行数据传输支持多种协议 (HTTP、FTP 等)提供丰富的选项和参数来满足不同需求 kubernetes/ingress-n…

Python unittest单元测试框架 TestSuite测试套件

TestSuite 测试套件简介 对一个功能的验证往往是需要很多多测试用例,可以把测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的顺序,而且TestSuite也可以嵌套Tes…

【hcie-cloud】【1】华为云Stack解决方案介绍、华为文档获取方式 【上】

文章目录 华为文档获取方式前言云计算发展背景国家政策、社会发展驱动数字经济开启新时代深化数字化转型提升效率,国家数字主权云进入落地阶段从Cloud-Based到Cloud-Native,两种模式长期并存适合政企智能升级的云华为云Stack,政企智能升级首选…