排序算法总结

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

冒泡排序 稳定

排序算法的稳定性

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

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 的相对位置没改变,所以稳定。

相关推荐
piggy侠5 小时前
百度PaddleOCR-VL:基于0.9B超紧凑视觉语言模型,支持109种语言,性能超越GPT-4o等大模型
人工智能·算法·机器学习
ZhengEnCi5 小时前
LeetCode_3347_执行操作后元素的最高频率II完全解析-从暴力枚举到差分数组优化的算法进阶利器
算法
是Dream呀5 小时前
基于代理技术的学术平台合规数据高效采集实践 —— 以 Google Scholar 文献获取为例
算法
软行5 小时前
LeetCode 每日一题 166. 分数到小数
数据结构·c++·算法·leetcode·哈希算法
夜晚中的人海6 小时前
【C++】二分查找算法习题
开发语言·c++·算法
CoovallyAIHub6 小时前
计算机视觉遇见手绘图表,如何教会机器理解流程图?
深度学习·算法·计算机视觉
nju_spy6 小时前
力扣每日一题(三)划分题 + 思路题
数学·算法·leetcode·动态规划·笔试·记忆化搜索·状态压缩