排序的时间复杂度、空间复杂度和稳定性等的比较

时间复杂度和空间复杂度我们比较熟悉,重点来看一下稳定性。

稳定性是指假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,a[i] = a[j] ,且 a[i]a[j] 之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。

先上结论:

插入排序是稳定的算法,在进行交换时,如果是相同的值,就不会进行交换。

希尔排序是不稳定的算法,相同值的元素可能会被分到不同的组中进行排序,其位置很可能会发生调换。

选择排序也是不稳定的算法,具体情况如下:

堆排一定是不稳定的算法,其每次取堆顶的值与最后一个进行交换,如果数组中有与其相同的值,其位置定发生了改变。

冒泡是稳定的。归并排序也是稳定的。在排序时,如果遇到值相等时,不交换。

但快排是不稳定的,具体过程如下:

快排还有一个重要的点就是其空间复杂度为 O(logN) ,因为在递归过程中会创建栈帧,其不断递归左右子区间,会创建大概 logN 个子区间,所以空间复杂度为 O(logN)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang 百题(实战快速掌握语法)_1

整形转字符串类型 实验介绍 本实验将展示三种方法来实现整形类型转字符串类型。 知识点 strconvfmt Itoa 函数 代码实例 Go 语言中 strconv 包的 itoa 函数输入一个 int 类型,返回转换后的字符串。下面是一个例子。 package mainimport ("fmt"&qu…

跟TED演讲学英文:Toward a new understanding of mental illness by Thomas Insel

Toward a new understanding of mental illness Link: https://www.ted.com/talks/thomas_insel_toward_a_new_understanding_of_mental_illness Speaker: Thomas Insel Date: January 2013 文章目录 Toward a new understanding of mental illnessIntroductionVocabularySum…

【C语言】联合(共用体)

目录 一、什么是联合体 二、联合类型的声明 三、联合变量的创建 四、联合的特点 五、联合体大小的计算 六、联合的应用(判断大小端) 七、联合体的优缺点 7.1 优点 7.2 缺点 一、什么是联合体 联合也是一种特殊的自定义类型。由多个不同类型的数…

测长仪的发展历程!

测长仪的发展历程可以大致分为以下几个阶段: 早期发展: 最早的测量工具主要是一些机械式测量工具,如角尺、卡钳等。 16世纪,在火炮制造中已开始使用光滑量规。 1772年和1805年,英国的J.瓦特和H.莫兹利等先后制造出利用…

Win快速删除node_modules

在Windows系统上删除 node_modules 文件夹通常是一个缓慢且耗时的过程。这主要是由于几个关键因素导致的: 主要原因 文件数量多且嵌套深: node_modules 文件夹通常包含成千上万的子文件夹和文件。由于其结构复杂,文件和文件夹往往嵌套得非常…

XXL-JOB分布式任务调度快速入门

文章目录 概念快速启动XXL-JOB调度初始化执行器项目配置执行器新增GLUE模式(Java)的任务新增BEAN模式(类形式)的任务BEAN模式(方法形式)的任务参考来源 概念 XXL-JOB是一个开源的分布式任务调度平台,它是一个轻量级、…

使用B树实现员工(人事)管理系统

1. 前言 使用B树来表示人事管理系统,其中每个节点代表一个人员,树的根节点为董事长,每个节点可以有多个子节点,表示下属。每一层代表一个等级分布。 addPerson: 添加人员功能通过查找指定上司节点,然后将新的人员作…

程序员/码农创业有多少种可能?

程序员创业,无疑是当下科技浪潮中的一股强大力量。凭借扎实的技术功底和敏锐的市场洞察力,在创业道路上展现出了无限的活力和创造力。那么,程序员创业究竟有哪些事情可以做呢?可以从技术产品的研发入手。 可以利用自己的专业知识…

分析GIS在疾病传播模型和公共卫生决策中的作用

在这个全球化日益加深的时代,疾病的跨国界传播成为全球公共卫生面临的重大挑战。地理信息科学(GIS)作为一门集成了空间数据采集、处理、分析及可视化的技术体系,在公共健康领域展现出其不可替代的价值。本文旨在深入探讨GIS如何助…

电动两轮车——电源方案

随着城镇化的发展人们的活动半径不断变宽,短交通出行方式仍能覆盖主要的范围。从主要国家核心地区的出行数据看平均通勤半径不高于15km,摩托车、电动两轮车等两轮出行方式能更好匹配日常短交通出行需求。 应用框图 通常,电动两轮车由三部分…

3D gaussian-splatting项目环境配置记录

1.前景 项目论文:https://arxiv.org/abs/2308.04079 GitHub项目下载地址:https://github.com/graphdeco-inria/gaussian-splatting git clone时里面的子模块小项目会git不到,需要单独github下来,放入相应文件夹。 sibr_viewer…

C# WinForm —— 33 ContextMenuStrip介绍

1. 简介 右键某个控件/窗体时,弹出来的菜单,比如VS中右键窗体,弹出来的这个菜单: 和MenuStrip类似,ContextMenuStrip主菜单下面可以有子菜单,子菜单下面可以有下一级子菜单 2. 属性 和MenuStrip一样 …

第6章 应用层

考纲内容 (一)网络应用模型 客户/服务器模型;P2P模型 (二)域名系统(DNS) 层次域名空间;域名服务器;域名解析过程 (三)文件传输协议(FTP) …

升级和维护老旧LabVIEW程序

在升级老旧LabVIEW程序至64位环境时,需要解决兼容性、性能和稳定性等问题。本文从软件升级、硬件兼容性、程序优化、故障修复等多个角度详细分析。具体包括64位迁移注意事项、修复页面跳转崩溃、解决关闭程序后残留进程的问题,确保程序在新环境中的平稳运…

[Java基本语法] 从0到1带你精通Java基本语法

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀线程与…

undetected_chromedriver驱动浏览器结束报错OSError: [WinError 6] 句柄无效

undetected_chromedriver驱动浏览器结束报错OSError: [WinError 6] 句柄无效 问题背景 使用undetected_chromedriver包驱动浏览器结束后报错句柄无效 Exception ignored in: <function Chrome.del at 0x000001DD50F07A60> Traceback (most recent call last): File “D:…

ESP32 IDF ADF 加入音频

需要把mp3制作成音频bin 用ADF自带工具 果用户需要生成自己的 audio-esp.bin&#xff0c;则需要执行 mk_audio_bin.py 脚本&#xff08;位于 $ADF_PATH/tools/audio_tone/mk_audio_tone.py&#xff09;&#xff0c;并且指定相关文件的路径。 源 MP3 文件在 tone_mp3_folder …

软考-架构设计师-综合知识总结(试卷:2009~2022)(下篇)

说明 本文档对2009到2022年试卷的综合知识进行了归纳总结&#xff0c;同时对叶宏主编的《系统架构设计师教程》划分重点。 第十七章&#xff1a;通信系统架构设计 17.2 考题总结 第十八章&#xff1a;安全架构设计 18.1 重要知识点 18.2 考题总结 第十九章&#xff1a;大数据…

2080. 区间内查询数字的频率

题目&#xff1a; 请你设计一个数据结构&#xff0c;它能求出给定子数组内一个给定值的 频率 。 子数组中一个值的 频率 指的是这个子数组中这个值的出现次数。 请你实现 RangeFreqQuery 类&#xff1a; RangeFreqQuery(int[] arr) 用下标从 0 开始的整数数组 arr 构造一个…

跨国大文件传输需要哪些方面?怎么实现数据快速传输?

跨国大文件传输涉及到许多方面&#xff0c;包括网络速度、安全性、可靠性和法律合规性等。 以下是跨国大文件传输时需要考虑的一些重要方面&#xff1a; 高速稳定的网络连接&#xff1a;确保有足够的带宽和稳定的网络连接以支持大文件的快速传输。这可能需要考虑到跨国网络的延…