嵌入式 - 数据结构与算法:(1-14)排序算法 - 冒泡/选择/快速/希尔排序对比

上一篇 下一篇
希尔排序

5)四种排序算法比较

排序算法 时间复杂度(最好 / 平均 / 最坏) 空间复杂度 稳定性 原地排序 优点 缺点 典型使用场景
冒泡排序 O(n) / O(n²) / O(n²) O(1) 稳定 实现极其简单,逻辑直观;对几乎有序数据效率较高 效率低,大量冗余交换;大数据下性能极差 教学演示;极小规模数据(n < 20);调试用途
选择排序 O(n²) / O(n²) / O(n²) O(1) 不稳定 交换次数少(最多 n−1 次);实现简单 比较次数固定且多;无法利用数据有序性优化 内存写入成本高(如 Flash)的场景;教学
快速排序 O(n log n) / O(n log n) / O(n²) O(log n)(平均) 不稳定 平均性能极佳;缓存友好;实际应用最快之一 最坏情况退化严重(如已排序);递归可能栈溢出 通用高性能排序(如 std::sort 底层);大数据量内存排序
希尔排序 O(n log n) / O(n^1.3~1.5) / O(n²) O(1) 不稳定 比 O(n²) 算法快很多;代码简洁;无需递归 性能依赖 gap 序列;不稳定;理论分析复杂 中等规模数据(n ≈ 1,000~10,000);嵌入式系统;作为 fallback 排序

说明:

  • 稳定性:指相等元素排序后相对位置不变,冒泡是唯一稳定的 O(n²) 算法。
  • 快速排序最坏情况可通过随机化 pivot 或三数取中避免。
  • 希尔排序的平均性能优于冒泡/选择/插入,但不如快排、归并。
  • 在现代库中(如 C++ std::sort、Python Timsort),快速排序或其变种是主力,而 O(n²) 算法仅用于极小数组的优化分支。

相关推荐
2301_7644413312 分钟前
用动力学系统(微分方程)为 Kernberg 的客体关系单元提供数学化的操作定义,把“自体—客体“这对心理结构建模成一个二维耦合系统
数据结构·python·算法·数学建模
keep intensify26 分钟前
最长有效括号
算法·leetcode·动态规划
CoderYanger30 分钟前
A.每日一题:1979. 找出数组的最大公约数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
猫头虎1 小时前
什么是ZCode for GLM-5.2?
开发语言·人工智能·python·科技·算法·ai编程·ai写作
长不胖的路人甲1 小时前
什么是赫夫曼树(哈夫曼树 / Huffman Tree)
python·算法·霍夫曼树
Warren2Lynch2 小时前
掌握 UML 构造型、标记定义与标记值:面向领域特定建模的 UML 扩展全面指南
大数据·算法·uml
157092511343 小时前
【无标题】
开发语言·python·算法
稚南城才子,乌衣巷风流3 小时前
换根法(Rerooting)算法详解
算法
晓子文集3 小时前
Tushare接口文档:期货交易日历(fut_trade_cal)
大数据·算法
^yi4 小时前
【Linux系统编程】进程状态的理解
算法·僵尸进程·孤儿进程·进程状态·挂起状态·阻塞状态