排序算法总结

| 排序算法 | 平均 时间复杂度 | 最坏 时间复杂度 | 最好 时间复杂度 | 空间复杂度 | 稳定性 |
| 希尔排序 | | | | | 不稳定 |
| 简单选择排序 | | | | | 不稳定 |
| 堆排序 | | | | | 不稳定 |
| 快速排序 | | | | | 不稳定 |
| 归并排序 | | | | | 稳定 |
| 直接插入排序 | | | | | 稳定 |

冒泡排序 稳定

排序算法的稳定性

是指将待排序列排序后,能确保排序码中的相对位置保持不变。

1.简单选择排序稳定性:

假设待排序列:(4,4,2,1)进行非降序排序:
> 第一趟排序过程:第一趟排序将最小的元素归位到第一个位置
比较 4和 4 , 4 不小于4,
比较 4和 2 ,2 小于 4, 更新未排序序列中最小元素为 2。
比较 2和 1, 1 小于 2, 更新未排序序列中最小元素为 1。
此时 1 是最小元素。
则 1 为整个未排序序列最小元素,并和第一个位置的元素交换。也就是 4 和 1 交换位置。
则第一趟排序后的序列为:(1, 4,2,4 )
> 同理,从第二个元素开始查找第二小的元素。
比较 4 和 2,2 小于 4, 更新未排序序列中最小元素为 2。
之后 2 均小于后面的所有元素,则 2 为整个未排序序列最小元素,并和第二个位置的元素
交换。也就是 4 和 2 交换位置。
则第二趟排序后的序列为:( 1,2, 4, 4 )
>同理,从第三个元素开始查找第三小的元素。
比较 4 和 4,4不小于 4 ,

第三趟:1,2,4,4

因为第三趟排序中,黑色4不比红色4小,所以不用交换。因此对比待排序列排序, 4,4的相对位置改变了,所以不稳定。
简单选择排序:共进行n-1趟排序

2.冒泡排序稳定性:

假设待排序列:(4,4,2,1)进行非降序排序
冒泡排序的基本思想是通过重复遍历待排序的数列,比较相邻元素的值,如果顺序错误就把
它们交换过来。每一轮遍历后,最大的元素会被"冒泡"到数列的末尾。对于非降序排序,即从小到大排序,较大的数值会逐渐移动到序列的右侧。
第一趟排序过程:
比较 4 和 4 ,不交换;
比较 4 和 2, 4 比 2 大,进行交换,此时序列(4,2, 4 ,1)
比较 4 和 1, 4 比 1 大,进行交换,此时序列(4,2,1, 4 )
第二趟排序过程:
比较 4 和 2 ,4 比 2 大,进行交换,此时序列(2,4,1, 4 )
比较 4 和 1,4 比 1 大,进行交换,此时序列(2,1,4, 4 )

第三趟排序过程:
比较 2 和 1 ,2 比 1 大,进行交换,此时序列(1,2,4, 4 )
所以冒泡排序 中对比 待排序列排序, 4, 4 的相对位置没改变,所以稳定。

相关推荐
GuWenyue16 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
我叫洋洋17 小时前
C ++ [ hello world ]
c语言·c++·算法
奋发向前wcx18 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
战族狼魂21 小时前
高频面试题精选:分治与AI Agent架构
人工智能·算法·大模型·大语言模型
李剑一21 小时前
你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴
算法
Scott9999HH1 天前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
中达瑞和-高光谱·多光谱1 天前
1nm到8nm光谱分辨率,你的应用该选哪款光谱相机?
算法·高光谱·高光谱相机
香辣牛肉饭1 天前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
旖-旎1 天前
LeetCode 279:完全平方数(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题