基本的排序算法
排序算法复杂度(空间+时间)
1.排序算法分为 非线性时间比较类排序 与 线性时间非比较类排序
2.非线性时间比较类排序算法主要有四大类:交换排序、插入排序、选择排序、归并排序
- 交换排序:冒泡排序、快速排序
- 插入排序:简单插入排序、希尔排序
- 选择排序:简单选择排序、堆排序
- 归并排序:二路归并排序、多路归并排序
3.线性时间非比较类排序主要有三大类:计数排序、基数排序、桶排序
4.排序算法复杂度(时间、空间)对比
-
时间复杂度(平均):
非线性时间比较排序:
O(n^2):冒泡排序、插入排序、选择排序
O(n* log2n):快速排序、堆排序、归并排序
O(n^1.3):希尔排序
线性时间非比较排序:
O(n + k)计数排序、桶排序
O(n * k)基数排序 -
空间复杂度:指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数
非线性时间比较排序:
O(1):冒泡排序、插入排序、希尔排序、选择排序、堆排序
O(n log2n):快速排序
O(n):归并排序
线性时间非比较排序:
O(n + k):都为O(n + k)
5.排序算法稳定性:(如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面,这叫不稳定)
- 不稳定:快速排序、希尔排序、选择排序、堆排序
- 稳定:其余都稳定