⚡ 排序算法 · 速记图谱

八大排序 · 完整动画  |  悬停卡片观看全过程

排序算法平均最好最坏空间稳定性
冒泡排序O(n²)O(n)O(n²)O(1)✔ 稳定
选择排序O(n²)O(n²)O(n²)O(1)✘ 不稳定
插入排序O(n²)O(n)O(n²)O(1)✔ 稳定
希尔排序O(n^1.3)O(n)O(n²)O(1)✘ 不稳定
归并排序O(n log n)O(n log n)O(n log n)O(n)✔ 稳定
快速排序O(n log n)O(n log n)O(n²)O(log n)✘ 不稳定
堆排序O(n log n)O(n log n)O(n log n)O(1)✘ 不稳定
基数排序O(d·(n+k))O(d·(n+k))O(d·(n+k))O(n+k)✔ 稳定
📌 口诀:插冒归基稳 · 选快希堆抖   —   稳定阵营:插入 · 冒泡 · 归并 · 基数  |  不稳定阵营:选择 · 快速 · 希尔 · 堆

🧠 速记口诀

复杂度分层平方级:冒选插希  |  nlogn:归快堆  |  d·(n+k):基数
稳定四君子插冒归基 → 谐音「插猫归鸡」🐱🐔
不稳四天王选快希堆 → 谐音「选快跌倒」💥
空间记忆O(1):冒选插希堆  |  O(n):归并  |  O(logn):快排
最坏退化快排逆序 O(n²)  |  希尔看增量序列
🫧 冒泡排序平均 O(n²)   最好 O(n)
🖱 悬停播放完整过程
核心:相邻两两比较,大数"冒"到最后。
优化:无交换提前终止 → 最好 O(n) ✅
👆 选择排序始终 O(n²)
🖱 悬停播放完整过程
核心:每轮选最小放前面。
缺点:有序也得跑 n² … 绝不退让 😤
🃏 插入排序平均 O(n²)   最好 O(n)
🖱 悬停播放完整过程
核心:像抓扑克牌,新数插入已排序区。
特点:基本有序时近乎 O(n) 🚀
🏗️ 希尔排序平均 O(n^1.3)
🖱 悬停播放完整过程
核心:分组插入,大步→小步(增量递减)。
关键:将"乱"化"小有序",gap=1 收尾
🔀 归并排序始终 O(n log n)
🖱 悬停播放完整过程
核心:分 → 治 → 合。两半有序再合并。
空间:需要 O(n) 辅助数组 🗄️
⚡ 快速排序平均 O(n log n)   最坏 O(n²)
🖱 悬停播放完整过程
核心:选基准(pivot),小左大右,递归分治。
警惕:完全有序 + 选最左为基准 → O(n²) ⚠️
🏔️ 堆排序始终 O(n log n)
🖱 悬停播放完整过程
核心:建堆 O(n) + 每次取堆顶 O(log n)
优点:O(1) 空间!「被低估的冠军」🏆
📊 基数排序始终 O(d·(n+k))
🖱 悬停播放完整过程
核心:按位桶排序,不必比较大小!
d=位数 · k=基数(10) · n=数量

八大排序速记图谱 · 完整排序过程动画