排序算法总结

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

冒泡排序 稳定

排序算法的稳定性

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

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

相关推荐
XFF不秃头17 小时前
力扣刷题笔记-旋转图像
c++·笔记·算法·leetcode
王老师青少年编程17 小时前
csp信奥赛C++标准模板库STL案例应用3
c++·算法·stl·csp·信奥赛·lower_bound·标准模版库
有为少年18 小时前
Welford 算法 | 优雅地计算海量数据的均值与方差
人工智能·深度学习·神经网络·学习·算法·机器学习·均值算法
Ven%18 小时前
从单轮问答到连贯对话:RAG多轮对话技术详解
人工智能·python·深度学习·神经网络·算法
山楂树の18 小时前
爬楼梯(动态规划)
算法·动态规划
谈笑也风生19 小时前
经典算法题型之复数乘法(二)
开发语言·python·算法
智算菩萨19 小时前
强化学习从单代理到多代理系统的理论与算法架构综述
人工智能·算法·强化学习
lhn19 小时前
大模型强化学习总结
算法
Gigavision19 小时前
MMPD数据集 最新Mamba算法 源码+数据集 下载方式
算法