排序算法
约 515 字大约 2 分钟...
排序算法
- 定义:
- 排序算法(sorting algorithm)用于对一组数据按照特定顺序进行排列。
- 通过排序算法得到有序数据,通常能够被更高效地查找、分析和处理。
排序算法评价维度:
维度 | 说明 |
---|---|
运行效率 | 时间复杂度尽量低、操作尽量少 |
就地性 | 在原数组上直接操作实现排序,无须借助额外的辅助数组 |
稳定性 | 排序后`相等元素在数组中的相对顺序不发生改变 |
自适应性 | 自适应排序的时间复杂度会受输入数据的影响(最佳时间复杂度、最差时间复杂度、平均时间复杂度并不完全相等) |
是否基于比较 | 基于比较的排序依赖比较运算符()来判断元素的相对顺序从而进行排序,理论最优时间复杂度为 。 非比较排序不使用比较运算符,时间复杂度可达 ,但其通用性相对较差。 |
常见排序对比:
排序算法 | 运行效率 | 稳定性 | 就地性 | 自适应性 | 基于比较 |
---|---|---|---|---|---|
冒泡排序 | 是 | 是 | 是 | 是 | |
插入排序 | 是 | 是 | 是 | 是 | |
选择排序 | 否 | 是 | 否 | 是 | |
快速排序 | ~ | 否 | 是 | 否 | 是 |
堆排序 | 否 | 是 | 否 | 是 | |
希尔排序 | 否 | 是 | 是 | 是 | |
归并排序 | 是 | 否 | 否 | 是 | |
计数排序 | 是 | 否 | 否 | 否 | |
桶排序 | 是 | 否 | 是 | 否 | |
基数排序 | 是 | 否 | 否 | 否 |