【数据结构】各排序方法比较

news2024/9/23 11:16:39

文章目录

  • 一、时间性能
  • 二、空间性能
  • 三、排序方法的稳定性能
  • 四、关于排序方法的时间复杂度的下限

一、时间性能

  1. 按照平均时间性能来分,有三类排序方法:

    • 时间复杂度为 ==O(nlogn)==的方法有:
      • 快速排序、堆排序、归并排序,其中以快速排序最好;
    • 时间复杂度为 O(n2) 的有:
      • 直接插入排序、冒泡排序、简单选择排序
      • 其中以直接插入为最好,特别是对那些对关键字近似有序的记录系列尤为如此;
    • 时间复杂度为 O(n) 的排序方法只有:基数排序
  2. 当待排序记录序列按关键字顺序有序时:

    • 直接插入排序和冒泡排序能达到 O(n) 的时间复杂度;
    • 而对于快速排序而言,这是最不好的情况,此时的时间性能退化为 O(n2),因此是应该尽量避免的情况。
  3. 简单选择排序、堆排序、归并排序的时间性能不随记录序列中关键字的分布而改变。

二、空间性能

指的是排序过程中所需的辅助空间大小

  1. 所有的简单排序方法(包括:直接插入、冒泡、简单选择)和堆排序的空间复杂度为 O(1)
  2. 快速排序O(logn),为栈所需要的辅助空间。
  3. 归并排序所需辅助空间最多,其空间负复杂度为 O(n)
  4. 链式基数排序需要另外设置队列首尾指针,则空间复杂度为 O(rd)

三、排序方法的稳定性能

  • 稳定的排序方法指的是,对于两个关键字相等的记录,他们在序列中的相对位置,在排序之前和经过排序之后,没有改变。
  • 当对多关键字的记录序列进行 LSD 方法排序时,必须采用稳定的排序方法。
  • 对于不稳定的排序方法,只要能举出一个实例说明即可。
  • 快速排序和堆排序不稳定的排序方法。

四、关于排序方法的时间复杂度的下限

  • 本章讨论的各种排序方法,除了基数排序之外,其他方法都是基于比较关键字进行排序的排序方法,可以证明,这类排序法可能达到的最快时间复杂度O(nlogn)
    • 基数排序不是基于“比较关键字”的排序方法,所以它不受这个限制。
  • 可以用一棵判定树来描述这类基于比较关键字进行排序的排序方法。

在这里插入图片描述

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

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

相关文章

Cesium 常见错误集

解决cesium widgets.css is not exported from package 在版本1.9以上版本后,按照官方文档引入css 时 会报错:cesium widgets.css is not exported from package 解决方案: 1.node_modules里找到cesium的package.json文件,在exports里增加导出widgets.css [rml_read_mo…

华为HCIE学习之open stack开篇(笔记)

文章目录一、云计算和虚拟化的区别二、Openstack的作用三、Openstack部署方式四、Openstack内的一些概念1、租户2、镜像3、规格4、网络一、云计算和虚拟化的区别 云计算是一种服务模式,而虚拟化是一种具体的技术。 二、Openstack的作用 Openstack是一个云操作系统…

小程序开发(五)

上拉触底进行节流处理在data中定义isloading发起请求时完成时回调事件响应式判断自定义编译模式:》编译自动跳转生命周期:onlaunch 初始化完成 只执行一次onShow:切换到前台onHide:切换到后台app.js :onReady :渲染完成才可以修改…

优秀的代码最终选择if else,还是switch case

今天我们不讨论哪个写法读起来更优秀,不讨论对于性能而言哪个更完美,也不讨论哪种情况下对于判断语句是常量还是变量的选择,而是单纯从最简单的角度来看一下,为什么很多优秀的项目优秀的代码,最终选择了if else语句&am…

惠普Probook450G7电脑开机总是卡死蓝屏怎么重装系统?

惠普Probook450G7电脑开机总是卡死蓝屏怎么重装系统?有用户在使用惠普Probook450G7电脑的时候,电脑一开机的时候总是会卡死无法操作,然后就变成蓝屏了。那么遇到这个问题怎么去进行系统的重新安装呢?一起来看看重装系统的具体操作…

中国电子学会2021年06月份青少年软件编程Python等级考试试卷一级真题(含答案)

青少年软件编程(Python)等级考试试卷(一级) 分数:100.00 题数:37 一、单选题(共25题,每题2分,共50分) 1. 下列程序运行的结果是?&am…

python 环境安装

时隔 将近一年了, 我又重新追寻我的理想了。 趁着2023年刚到,先写一点 python 打个基础。 还是老样子,学到及输出,所以继续写文章。 本文章主要介绍 python 的环境搭建 和 输出 HelloWorld 用于测试搭试好的环境。 本专栏主要…

【ArcGIS微课1000例】0062:标准样式世界地图制作方法

本文基于世界行政区轮廓矢量数据,讲解标准地图的样式(形状)的世界矢量图制作方法。 文章目录 一、加载世界数据二、修改地图投影三、地图布局整饰一、加载世界数据 首先我们将世界行政数据(配套实验数据包中的0062.rar)加载到ArcMap,我们可以看到地图形状接近于矩形形状…

在线 OJ 项目(三) · 处理项目异常 · UUID · 校验代码的安全性 · 阶段性总结

一、处理异常二、区分不同请求的工作目录UUID对 Task 类进行重构三、校验代码的安全性四、阶段性总结书接上回,我们自己测试没问题,是因为使用了正常数据;万一用户输入的是非法的请求,该咋办? 我们需要处理异常请求&a…

内网服务器结合vxlan和iptables-snat实现内网服务器上网——筑梦之路

之前通过其他方式实现 CentOS搭建NAT和DHCP服务,实现共享上网_筑梦之路的博客-CSDN博客_vsphere 创建dhcp CentOS 7 firewalld实现共享上网和搭建本地yum仓库——筑梦之路_筑梦之路的博客-CSDN博客 如上图,有这样一种场景,我们经常遇到&…

【以音视频开发进阶指南为基础】音视频基础概念

一、数字音频 数字音频可以粗糙的理解为将本质是模拟信号的声音音频数字化,那么如何数字化呢,需要经过三个步骤:采样、量化和编码。 采样:将声音的振动信息转化为电信号,再对电信号进行放大处理得到声音的模拟信号&a…

POE交换机常见问题解答

POE交换机通过网线供电的方式为标准的POE终端设备供电,可以免去额外的电源布线,在为一些基于IP的终端(如IP电话机、无线局域网接入点AP、网络摄像机等)传输数据信号的同时,还能为此类设备提供直流供电的技术。POE技术能…

Windows10安装java环境

Windows10安装java环境 文章目录Windows10安装java环境下载解压配置下载 Java8 https://www.oracle.com/java/technologies/downloads/#java8-windows Java11 https://www.oracle.com/java/technologies/downloads/#java11-windows Java17 https://www.oracle.com/java/techno…

12.日期与时间

目录 一.Date类 1.1 什么是Date类 1.2 Date类的构造器和常用方法 1.2.1 常用构造器 1.2.2 常用方法 二.SimpleDateFormat 2.1 什么是SimpleDateFormat 2.2 SimpleDateFormat的作用 2.3 SimpleDateFormat的构造器和方法 2.3.1 构造器 2.3.2 方法 2.3.3 例子 2.4 Sim…

[论文笔记] XRP: In-Kernel Storage Functions with eBPF

XRP: In-Kernel Storage Functions with eBPF XRP: 利用 eBPF 的核内存储函数 [Paper] [Slides] [Code] OSDI’22 摘要 提出了 XRP, 一个允许应用程序从 NVMe 驱动程序中的 eBPF 钩子(hook)执行用户定义的存储函数(例如索引查找或聚合)的框架, 可以安全地绕过大部分内核的存…

中国电子学会2022年09月份青少年软件编程Python等级考试试卷一级真题(含答案)

分数:100 题数:37 测试时长:60min 一、单选题(共25题,共50分) 1.表达式len("学史明理增信 ,读史终生受益") > len(" reading history will benefit you ")的结果是?(…

vue3全局组件自动注册

前言:本文主要讲述vue3的全局公共组件的自动注册第一步:建文件需要在src/components 下创建一个文件夹用于存放封装的公共组件(这里我起名叫coms)需要在src/components 下创建一个js文件用于存放引入组件并注册(这里我…

前端经典面试500题【下】

面试 一、vue 说说vue动态权限绑定渲染列表&#xff08;权限列表渲染&#xff09; 首先请求服务器,获取当前用户的权限数据,比如请求 this.$http.get(“rights/list”); 获取到权限数据之后,在列表中使用v-if v-if-else的组合来展示不同的内容 <template><div>&…

JavaScript基础复盘3

流程控制 在一个程序执行的过程中&#xff0c;各条代码的执行顺序怼程序的结果是有直接影响的。很多时候我们药通过控制代码的执行顺序来实现我们药完成的功能。 简单理解&#xff1a;流程控制就是来控制我们的代码按照什么结构顺序来执行 JavaScript作为一门程序语言&#x…

JDBC-Mysql数据库连接池

传统数据库连接的弊端 一个java程序多个正常要开启多个mysql连接-正常开发中次数在1w次往上&#xff08;还可能有多个java程序-并发编程&#xff09;&#xff0c;但是如果很多歌连接的话&#xff0c;数据库可能就瘫痪了 测试一个程序连接5000次 抛出一个&#xff0c;太多连接的…