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