排序算法可以分为内部排序和外部排序。
- 内部排序:数据记录在内存中排序。
- 外部排序:排序数据非常多,内存不能一次容纳全部数据,在排序过程中需要借助外部存储。
十大排序算法:
冒泡排序⭐插入排序⭐选择排序⭐快速排序⭐归并排序希尔排序计数排序堆排序桶排序基数排序
算法复杂度
| 算法 | 时间复杂度 | 空间复杂度 | 稳定性 | ||
|---|---|---|---|---|---|
| 最好 | 最坏 | 平均 | |||
| 冒泡排序 | 稳定 | ||||
| 插入排序 | 稳定 | ||||
| 选择排序 | 不稳定 | ||||
| 快速排序 | 不稳定 | ||||
| 归并排序 | O( n log n) | O( n log n) | O( n log n) | O( n ) | 稳定 |
| 希尔排序 | O( n log2 n) | O( n log2 n) | O( n log n) | O(1) | 不稳定 |
| 计数排序 | O( n + k) | O( n + k) | O( n + k) | O(k) | 稳定 |
| 堆排序 | O( n log n) | O( n log n) | O( n log n) | O(1) | 不稳定 |
| 桶排序 | O( n + k) | O( n2 ) | O( n + k) | O( n + k) | 稳定 |
| 基数排序 | O( n x k) | O( n x k) | O( n x k) | O( n + k) | 稳定 |
什么是稳定性?
2 个相等的元素在排序前和排序后,元素顺序不变。(原来在它前面,现在还在它前面)
不稳定的排序算法
选择排序快速排序希尔排序堆排序
