数据结构中排序复杂度整理

今天上午复习了一下《数据结构高分笔记》中的各个排序算法,现在先对各个排序算法的复杂度做一个整理。

1、各个排序算法复杂度分析

  最坏情况 最好情况 平均情况 空间复杂度
直接插入排序 O(n^2) O(n)

O(n^2)

O(1)
折半插入排序 O(n^2) O(n) O(n^2) O(1)
希尔排序     O(nlogn) O(1)
冒泡排序 O(n^2) O(n) O(n^2) O(1)
快速排序 O(n^2) O(nlogn) O(nlogn) O(logn)
直接选择排序 O(n^2) O(n^2) O(n^2) O(1)
排序 O(nlogn)   O(nlogn) O(1)
二路归并排序 O(nlogn) O(nlogn) O(nlogn) O(n)

2、关于各个排序算法稳定性:快速排序、希尔排序、直接选择排序和堆排序是不稳定的排序算法,其它均为稳定的排序算法。

3、关于排序原理细节:

① 经过一趟排序,能够保证一个元素达到最终位置,这样的排序是交换类的那两种(冒泡排序和快速排序)和选择类那两种(直接选择排序和堆排序)。

② 排序方法的元素比较次数和原始序列无关的排序算法有:直接选择排序和折半插入排序。

③ 排序方法的元素比较次数和原始序列有关的排序算法有:交换类的排序。

4、借助于“比较”进行排序的算法,在最坏情况下能够达到的最好的时间复杂度为O(nlogn)。

猜你喜欢

转载自blog.csdn.net/weixin_36378917/article/details/80540493