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

排序算法稳定性

稳定性:
用一句话总结排序算法的稳定性就是:同样的值,在排完序之后改不改变相对次序。
举例:arr[] = {3,2,1,2,1,3},数组中共有1、2 、3各2个数,排完序之后arr1[] = {1,1,2,2,3,3}。稳定性是指排完序之后,arr[]中的第一个位置的1在arr1[]中是否还是第一个,arr[]中第2个位置的1在arr1[]中是否还在第二个。
如果能保持不变,证明这个算法有稳定性,否则,则称为没有稳定性。

这种有稳定性的排序对基础类型的数据来讲是没用的,1就是1、2就是2,相同数字之间任顺序调换,丝毫没有影响,但是如果是自定义的类就不同了。

举例:
比如说:Student类中有班级class和年龄age属性。
第一次先用age有小到大进行排序。排完序之后 年龄小 -> 年龄大。
在紧接着用班级进行由小到大排序,此时如果这个算法是有稳定性的,那么排完序的结果里,1班学生的内部年龄也一定是从小到大的。2班学生的内部年龄也一定是从小到大的。

再比如说。商品价格区间100 - 200,先按照价格进行排序。再根据好评度进行排序。如果算法是由稳定性的,那么得到的结果中,第一条数据就是最物美价廉的商品。

排序算法总结:
基于之前更新的所有帖子中所介绍的算法做一个总结。

时间复杂度额外空间复杂度稳定性
选择排序 O ( N 2 ) O(N^2) O(N2) O ( 1 ) O(1) O(1)
冒泡排序 O ( N 2 ) O(N^2) O(N2) O ( 1 ) O(1) O(1)
插入排序 O ( N 2 ) O(N^2) O(N2) O ( 1 ) O(1) O(1)
归并排序 O ( N ∗ l o g N ) O(N * log^N) O(NlogN) O ( N ) O(N) O(N)
随机快排 O ( N ∗ l o g N ) O(N * log^N) O(NlogN) O ( l o g N ) O(logN) O(logN)
堆排序 O ( N ∗ l o g N ) O(N * log^N) O(NlogN) O ( 1 ) O(1) O(1)
========
计数排序 O ( N ) O(N ) O(N) O ( M ) O(M) O(M)
基数排序 O ( N ) O(N ) O(N) O ( N ) O(N) O(N)

总结:
为了绝对速度选快排,稳定性选归并排序,占用空间少选堆排序。

相关文章:

排序算法稳定性

稳定性: 用一句话总结排序算法的稳定性就是:同样的值,在排完序之后改不改变相对次序。 举例:arr[] {3,2,1,2,1,3},数组中共有1、2 、3各2个数,排完序之后arr1[] {1,1,2,2,3,3}。稳定性是指排完序之后&…...

统计学期末复习整理

统计学:描述统计学和推断统计学。计量尺度:定类尺度、定序尺度、定距尺度、定比尺度。 描述统计中的测度: 1.数据分布的集中趋势 2.数据分布的离散程度 3.数据分布的形状。 离散系数 也称为标准差系数,通常是用一组数据的标准差与…...

Sketch在线版免费使用,Windows也能用的Sketch!

Sketch 的最大缺点是它对 Windows/PC 用户不友好。它是一款 Mac 工具,无法在浏览器中运行。此外,使用 Sketch 需要安装其他插件才能获得更多响应式设计工具。然而,现在有了 Sketch 网页版工具即时设计替代即时设计! 即时设计几乎…...

详解uni-app项目运行在安卓真机调试

详解uni-app项目运行在安卓真机调试 uni-app项目运行在安卓真机调试 文章目录 详解uni-app项目运行在安卓真机调试前言为什么要用真机调试?真机调试操作步骤总结 前言 UNI-APP学习系列之详解uni-app项目运行在安卓真机调试 为什么要用真机调试? 因为安…...

体积小、无广告、超实用的5款小工具

大家好,我又来啦,今天给大家带来的5款软件,共同特点都是体积小、无广告、超实用,大家观看完可以自行搜索下载哦。 1.动态桌面——WinDynamicDesktop WinDynamicDesktop是一款用于根据时间和地点自动更换桌面壁纸的工具。它可以让…...

OZON好出单吗?新手如何做?注意事项是什么?

最近OZON的势头确实很猛,东哥后台也收到了很多关于OZON的咨询,很多想尝试跨境电商的新手卖家都对这个平台跃跃欲试,其中问最多的就是,“OZON好出单吗?”“新手做OZON需要注意什么?避开哪些坑?”…...

性能测试需求分析有哪些?怎么做?

目录 性能测试必要性评估 常见性能测试关键评估项如下: 性能测试工具选型 性能测试需求分析 性能测试需求评审 性能测试需求分析与传统的功能测试需求有所不同,功能测试需求分析重点在于从用户层面分析被测对象的功能性、易用性等质量特性&#xff…...

STM32F103RCT6 -- 基于FreeRTOS 的USART1 串口通讯

1. 在STM32F103RCT6 单片机上跑FreeRTOS 实时操作系统,使用串口USART1 通讯,发送 – 接收数据,实现上位机与下位机的通信 使用 FreeRTOS 提供的队列(Queue)机制来实现数据的接收和发送 2. USART1 配置: …...

区间预测 | MATLAB实现基于QRCNN-LSTM-Multihead-Attention多头注意力卷积长短期记忆神经网络多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-LSTM-Multihead-Attention多头注意力卷积长短期记忆神经网络多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-LSTM-Multihead-Attention多头注意力卷积长短期记忆神经网络多变量时间序列区间预测效果一览基本介绍模型描述程序设计…...

递归--打印一个字符串的全部排列(java)

打印一个字符串的全部排列 打印一个字符串的全部排列解题思路打印一个字符串的全部排列,要求不要出现重复的排列递归专题 打印一个字符串的全部排列 自负串全排序: 举例: abc 的全排序是: abc acb bac bca cba cab 解题思路 因为每个字符都要选,其实就是选择每个字符…...

【001 设备驱动】主设备号和次设备号的用途

一、请简述主设备号和次设备号的用途 Linux 中每个设备都有一个设备号,设备号由主设备号和次设备号两部分组成,主设备号表示某一个具体的驱动,次设备号表示使用这个驱动的各个设备。 Linux 提供了一个名为 dev_t 的数据类型表示设备号&…...

移动端PDF在线预览

苹果手机可以直接在线预览PDF文件,而安卓手机不行,必须得下载(如图),所以需要解决一下 1.准备所需js文件 (1)js下载地址https://mozilla.github.io/pdf.js/ (2)下载步骤 ①:打开网址后&#x…...

虚拟机两次寻址

一次寻址: 虚拟、逻辑地址:CS(段选择子) eip(段内偏移)> 线性地址 : 32位或64位 通过页表> 物理地址 x86: 页面大小4k pte4个字节 10-10-12 (不管是x86 x86PAE x64下页内偏…...

DRF之JWT认证

一、JWT认证 在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证。我们不再使用Session认证机制,而使用Json Web Token(本质就是token)认证机制。 Json web token (JWT), 是为了在网络应用环…...

华为OD机试真题 Java 实现【放苹果】【2022Q4 100分】

一、题目描述 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? 注意:如果有7个苹果和3个盘子,(5,1,1)和(1,5,1)被视为是同一种分法。 数据范围:0≤m≤10 ,1≤n≤10 。 二、输入描述 输入两个int整数。 三、输出描述 输…...

拼多多继续ALL IN

2023年注定是中国电商不平凡的一年。 随着网购用户数量见顶,经济形势进入新常态,电商平台已经来到了短兵相接的肉搏战阶段。 此刻的618大促,硝烟弥漫,刀光剑影,电商“决战”似乎是迫在眉睫。对各个平台来说&#xff0c…...

Unity的IPostprocessBuildWithReport:深入解析与实用案例

Unity IPostprocessBuildWithReport Unity IPostprocessBuildWithReport是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目后自动执行一些操作,并且可以获取构建报告。这个功能可以帮助开发提高工作效率,减少手动操作的时间和错误…...

九、Spring Cloud—gateway网关

一、引言 每个微服务都需和前端进行通信,解决每个微服务请求时的鉴权、限流、权限校验、跨域等逻辑,放在一个统一的地方进行使用。 在微服务架构中,网关是一个重要的组件,它作为系统的入口,负责接收所有的客户端请求…...

ARM微架构与程序编写

目录 1.流水线 2.指令流水线 3. 多核处理器​编辑 4. 工程搭建 4.1为Keil软件配置编译工具链 5.程序编写 5.1 数据处理指令 5.2 带标志位的加法ADC ADDS 5.3 跳转指令B\BL 5.4 单寄存器内存访问 5.5 批量寄存器内存访问 5.6 栈的应用->叶子函数的调用过程 5.…...

Windows下利用Anaconda创建多个CUDA环境

参考 https://blog.csdn.net/qq_42395917/article/details/126237388 https://blog.csdn.net/qq_42406643/article/details/109545766 (待学习补充) https://blog.csdn.net/qq_43919533/article/details/125694437 (待学习补充) 安装cudatoolkit和cudnn # 前提是我已经安装了…...

SAP移动类型全解析:从收货到移库,一文搞懂库存管理核心配置

SAP移动类型实战指南:解锁库存管理的核心密码 当你第一次在SAP系统中执行货物移动时,面对上百种移动类型代码,是否感到无从下手?作为全球500强企业广泛采用的ERP系统,SAP的库存管理模块以其严谨性和灵活性著称&#xf…...

Ostrakon-VL终端入门指南:如何导出结构化JSON结果用于BI工具接入

Ostrakon-VL终端入门指南:如何导出结构化JSON结果用于BI工具接入 1. 认识Ostrakon-VL终端 Ostrakon-VL终端是一款专为零售与餐饮行业设计的智能图像识别工具,它将复杂的AI技术包装成一个充满游戏感的像素风格界面。这个终端基于Ostrakon-VL-8B多模态大…...

2026年高压电磁阀制造厂大比拼:哪家更值得信赖?

在工业领域,高压电磁阀是许多关键系统的核心部件,其性能和可靠性直接关系到整个系统的稳定性和安全性。随着技术的不断进步和市场需求的多样化,选择一家值得信赖的高压电磁阀制造厂变得尤为重要。本文将从多个维度对比分析几家主流高压电磁阀…...

Docker 容器技术 第一节---定义、概念、安装CentOS 7 Linux系统、MobaXterm中安装docker-ce

一、Docker的定义Docker是一款开源的容器化平台,它能将应用及其依赖的环境、配置、库等打包成轻量可移植的容器,既保证了不同环境下应用运行的一致性,又以共享宿主机内核的方式实现了比传统虚拟机更高效的资源利用和秒级启动速度,…...

Vue 中的 deep、v-deep 和 >>> 有什么区别?什么时候该用

点赞 收藏 学会🤣🤣🤣 “你用 Element Plus 写了个按钮,想改下 hover 颜色,结果死活不生效!最后查了半天,发现得加个 :deep() 才行” 其实,这是 Vue 中一个非常常见的坑&#xf…...

网盘直链下载助手终极指南:3步实现高速下载新时代

网盘直链下载助手终极指南:3步实现高速下载新时代 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

手把手教你部署OpenClaw(小龙虾),打造专属AI数字员工

2026年,开源AI智能体OpenClaw(国内昵称“小龙虾”)凭借独特的“数字员工”定位迅速崛起,GitHub星标一路攀升至28万,成为当下最受开发者和办公人群青睐的开源AI项目。 一、OpenClaw核心优势解析 OpenClaw能在众多开源…...

Qwen3-4B-Thinking开源镜像教程:Chainlit前端对接企业微信机器人

Qwen3-4B-Thinking开源镜像教程:Chainlit前端对接企业微信机器人 1. 引言:当大模型遇到企业级应用 想象一下这个场景:你刚部署好一个强大的AI模型,它能帮你写代码、分析问题、生成文档。但每次使用,你都得打开一个特…...

新手零基础入门:用快马生成你的第一个dify对话应用

今天想和大家分享一个特别适合新手入门的实践:用InsCode(快马)平台快速搭建你的第一个dify对话应用。作为一个刚接触AI开发的小白,我发现这个平台真的能省去很多麻烦的配置步骤,特别适合想快速看到成果的新手。 为什么选择dify作为入门&…...

最后的GIL堡垒正在崩塌:现在不掌握这6种无锁Python并发安全范式,你的微服务将在Q3大规模core dump

第一章:GIL消亡史与无锁Python并发的必然性Python 的全局解释器锁(GIL)自1991年诞生起,便成为 CPython 解释器中一道不可逾越的并发屏障。它确保同一时刻仅有一个线程执行 Python 字节码,虽简化了内存管理与引用计数实…...