No.1.4 排序 - 小结


一、时间复杂度:

  1.毫无疑问,桶排序是最快的,时间复杂度为 O(N+M),N=初始化列表长度,M=输入队列的长度

  2.冒泡排序是最慢的,时间复杂度 O(N*(N-1)/2) ~~ O(N**2)

  3.快速排序是对冒泡排序的一种改进,时间复杂度为 O(NlogN)

  比如说,当今计算机的计算能力达到每秒10亿次(实际要更快),对于一个N=10000,M=1000的排序问题,各自的解出时间:

  桶排序:(10000 + 1000) / 10亿 = 1.1 微妙

  冒泡排序:1000*1000 / 10亿 = 1 毫秒

  快速排序:1000 * log1000 ~= 10 微妙

二、列表长度

  1.桶排序的最大问题是,浪费空间,有多少种类就要初始化多长的列表,但是计算机的内存是有限的,以 32bytes为例,超出-2147483648~2147483647 的话,就不能使用桶排序;

  2.冒泡排序的最大问题是,太慢(当然,如果N不大的话,也没什么问题),对于时效性要求高的问题,不适合用;

  3.快速排序算法,就介于桶排序和冒泡排序之间,很多时候,最适合的算法不一定是最快的,但一定是最优的!

相关