嵌入式 - 数据结构与算法:(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²) 算法仅用于极小数组的优化分支。

相关推荐
倒头就睡的小比特4 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼4 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
旖旎夜光4 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark4 天前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her14 天前
并查集-听课笔记
笔记·算法·并查集
码流子4 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven4 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark4 天前
从算法设计模式看编程思维的抽象能力4
算法
2601_962218614 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法