数据结构——排序

一、直接插入排序

直接插入排序( Direct Insertion Sort )是一种简单直观的排序算法,适用于 小规模或者部分已排序 的数据集。
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。稳定

二、希尔排序

是一种基于插入排序的高效排序算法,也是一种非稳定排序算法。
优点:
相较于简单的插入排序,大大减少了数据移动的次数,提高了效率。
不需要额外的存储空间,是原地排序算法。
对于 中等大小 的数据集,效率较高。
缺点:
算法的性能依赖于间隔序列的选择。
是不稳定的排序算法。
在最坏的情况下,其效率仍然不如快速排序、归并排序等其他 O(n log n) 算法。

稳定性:希尔排序是不稳定的排序算法,因为在不同的子序列中插入元素可能会改变相同元素的原始相对顺序。

三、快速排序

快速排序( Quick Sort )是一种高效的排序算法
稳定性:
快速排序是不稳定的排序算法,因为相等的元素可能会因为分区操作而改变原有的顺序。
优点:
平均时间复杂度较好,适合 大规模数据排序
排序过程中数据是原地交换,不需要额外的存储空间(除了递归栈)。
缺点:
最坏情况下性能较差。
不是稳定的排序算法。
步骤
1 、 从数列中挑出一个元素,称为 " 基准 " ( pivot ),通常选择第一个元素
2 、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition )操作。
3 、递归地( recursive )把小于基准值元素的子数列和大于基准值元素的子数列排序。

相关推荐
ysa05103019 分钟前
【板子】短序列dp(换成维护更小常数维度的dp)
c++·笔记·算法·板子
shwill12321 分钟前
PID 算法(三)--- 增量 PID ↔ 单神经元 PID 等价映射
linux·算法
wabs6662 小时前
关于图论【卡码网110.字符串迁移的思考】
数据结构·算法·图论
hanlin032 小时前
刷题笔记:力扣第242、349题(哈希表)
笔记·算法·leetcode
only-qi3 小时前
大模型Agent面试攻略:落地工程痛点、评估体系与Agentic RAG核心精讲
人工智能·算法·面试·职场和发展·langchain·rag
Gauss松鼠会5 小时前
【GaussDB】GaussDB锁阻塞源头查询
java·开发语言·前端·数据库·算法·gaussdb·经验总结
oier_Asad.Chen5 小时前
【洛谷题解/AcWing题解】洛谷P4011 孤岛营救问题/AcWing1131拯救大兵瑞恩
数据结构·笔记·学习·算法·动态规划·图论·宽度优先
逻辑君6 小时前
基于 A2C 算法的双足机器人行走控制
人工智能·深度学习·算法·机器学习·机器人
冻柠檬飞冰走茶6 小时前
PTA基础编程题目集 7-19 支票面额(C语言实现)
c语言·开发语言·数据结构·算法
船漏了就会沉6 小时前
状态压缩DP:小数据下的“暴力美学”
算法