文章目录
- 前言
- 时间复杂度
- 空间复杂度
- 稳定性
前言
通过前面的学习,我们了解到了七大经典的排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序.
那么下面就这其中算法的时间复杂、空间复杂度和稳定性进行分析。
时间复杂度
- 直接插入排序:平均时间复杂度为 O ( N 2 ) O(N^2) O(N2),最好情况(顺序有序)时的时间复杂为 O ( N ) O(N) O(N).
- 希尔排序:平均时间复杂度为 O ( N 1.3 ) O(N^{1.3}) O(N1.3),最好情况(顺序有序)时的时间复杂为 O ( N l o g N ) O(NlogN) O(NlogN).
- 选择排序:平均时间复杂度为 O ( N 2 ) O(N^2) O(N2),最好情况(顺序有序)时的时间复杂为 O ( N 2 ) O(N^2) O(N2).
- 堆排序:平均时间复杂度为 O ( N l o g N ) O(NlogN) O(NlogN).
- 冒泡排序:平均时间复杂度为 O ( N 2 ) O(N^2) O(N2),最好情况(顺序有序)时的时间复杂为 O ( N ) O(N) O(N).
- 快速排序:平均时间复杂度为 O ( N l o g N ) O(NlogN) O(NlogN).
- 归并排序:平均时间复杂度为 O ( N l o g N ) O(NlogN) O(NlogN).
空间复杂度
- 直接插入排序:空间复杂度为 O ( 1 ) O(1) O(1)
- 希尔排序:空间复杂度为 O ( 1 ) O(1) O(1)
- 选择排序:空间复杂度为 O ( 1 ) O(1) O(1)
- 堆排序:空间复杂度为 O ( 1 ) O(1) O(1)
- 冒泡排序:空间复杂度为 O ( 1 ) O(1) O(1)
- 快速排序:空间复杂度为 O ( l o g N ) O(logN) O(logN)
- 归并排序:空间复杂度为 O ( N ) O(N) O(N)
稳定性
排序算法的稳定性是指相同元素排序前后的相对位置不变。
- 直接插入排序:稳定
- 希尔排序:不稳定
- 选择排序:不稳定
- 堆排序:不稳定
- 冒泡排序:稳定
- 快速排序:不稳定
- 归并排序:稳定