十大经典排序算法简介
一 概述
本文对十大经典排序算法做简要的总结(按常用分类方式排列),包含核心思想、时间/空间复杂度及特点。
二、比较类排序
1. 冒泡排序 (BUBBLE SORT)
思想:重复交换相邻逆序元素,像气泡上浮
复杂度:
时间:O(n^2)(最好情况O(n))
空间:O(1)
特点:简单但效率低,稳定排序
2. 选择排序 (SELECTION SORT)
思想:每次选择最小元素放到已排序末尾
复杂度:
时间:O(n^2)
空间:O(1)
特点:不稳定,交换次数少(适合小数据)
3. 插入排序 (INSERTION SORT)
思想:将未排序元素插入已排序序列的合适位置
复杂度:
时间:O(n^2)(最好情况O(n))
空间:O(1)
特点:稳定,对小规模/基本有序数据高效
4. 希尔排序 (SHELL SORT)
思想:分组插入排序(缩小增量法)
复杂度:
时间:O(n^{1.3})(依赖增量序列)
空间:O(1)
特点:首个突破O(n^2)的算法,不稳定
5. 归并排序 (MERGE SORT)
思想:分治法(分割→排序→合并)
复杂度:
时间:O(n\log n)
空间:O(n)
特点:稳定,适合外部排序(如文件排序)
6. 快速排序 (QUICK SORT)
思想:分治法(选基准值分区)
复杂度:
时间:O(n\log n)(最坏O(n^2))
空间:O(\log n)(递归栈)
特点:平均最快,不稳定
7. 堆排序 (HEAP SORT)
思想:构建大顶堆,反复取堆顶元素
复杂度:
时间:O(n\log n)
空间:O(1)
特点:不稳定,适合大数据流取Top K
三、非比较类排序
8. 计数排序 (COUNTING SORT)
思想:统计元素出现次数后累加输出
复杂度:
时间:O(n+k)(k为数据范围)
空间:O(n+k)
特点:稳定,要求整数且范围小
9. 桶排序 (BUCKET SORT)
思想:数据分到有限数量的桶内,各桶单独排序
复杂度:
时间:O(n+k)(理想情况)
空间:O(n+k)
特点:适合均匀分布数据,依赖桶设计
10. 基数排序 (RADIX SORT)
思想:按位数从低位到高位依次排序
复杂度:
时间:O(n \times k)(k为最大位数)
空间:O(n+k)
特点:稳定,适合整数/字符串排序
四 关键指标说明
1 稳定性:相等元素排序后相对位置不变。
1)稳定:归并、冒泡、插入、计数、桶、基数。
2)不稳定:选择、希尔、快速、堆。
2 时间复杂度差异
1)快速排序最坏情况可通过随机选基准避免。
2)希尔排序复杂度依赖增量序列选择。
3 空间复杂度对比:
1)归并排序需要额外O(n)空间。
2)非比较排序(计数/桶/基数)空间换时间。
五 选型建议
1)小数据量 :插入排序(简单高效)
2)通用排序:快速排序(平均性能最优)
3)内存敏感:堆排序(原地排序)
4)稳定需求:归并排序(大数据)或基数排序(整数)
5)特殊数据:
整数小范围 → 计数排序
多关键字 → 基数排序
均匀分布 → 桶排序
(注:实际应用中需结合编程语言内置排序的实现优化)