diff --git a/notes/算法.md b/notes/算法.md index 8ce9682d..30467b42 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -770,14 +770,14 @@ public class HeapSort> extends Sort { | 算法 | 稳定 | 时间复杂度 | 空间复杂度 | 备注 | | :---: | :---: |:---: | :---: | :---: | -| 选择排序 | :heavy_check_mark:| N2 | 1 | | -| 冒泡排序 | :heavy_check_mark: | N2 | 1 | | -| 插入排序 | :heavy_check_mark: | N \~ N2 | 1 | 时间复杂度和初始顺序有关 | -| 希尔排序 | :heavy_multiplication_x: | N 的若干倍乘于递增序列的长度 | 1 | | -| 快速排序 | :heavy_multiplication_x: | NlogN | logN | | -| 三向切分快速排序 | :heavy_multiplication_x: | N \~ NlogN | logN | 适用于有大量重复主键| -| 归并排序 | :heavy_check_mark: | NlogN | N | | -| 堆排序 | :heavy_multiplication_x: | NlogN | 1 | | | +| 选择排序 | √| N2 | 1 | | +| 冒泡排序 | √ | N2 | 1 | | +| 插入排序 | √ | N \~ N2 | 1 | 时间复杂度和初始顺序有关 | +| 希尔排序 | × | N 的若干倍乘于递增序列的长度 | 1 | | +| 快速排序 | × | NlogN | logN | | +| 三向切分快速排序 | × | N \~ NlogN | logN | 适用于有大量重复主键| +| 归并排序 | √ | NlogN | N | | +| 堆排序 | × | NlogN | 1 | | | 快速排序是最快的通用排序算法,它的内循环的指令很少,而且它还能利用缓存,因为它总是顺序地访问数据。它的运行时间近似为 \~cNlogN,这里的 c 比其他线性对数级别的排序算法都要小。使用三向切分快速排序,实际应用中可能出现的某些分布的输入能够达到线性级别,而其它排序算法仍然需要线性对数时间。