1.桶排序是一种利用空间换取时间的排序方式 .
桶排序是非比较排序,无法解决一些必须比较的排序问题.
2.原理:
将数组中的N个元素分到M个桶中,再以每个桶为单位各自进行排序(可以使用其他排队方法,也可以递归使用桶排序).
如图:
3.计数排序和桶排序的区别:
计数排序是特殊的桶排序,当桶个数M取最大时,计数排序就是桶排序(通俗理解就是每个桶只装相同的元素的桶排序就是计数排序).
4.时间复杂度:
以快排为例,假设每个桶中元素分配均匀:
①第一阶段
将所有元素分入桶内,需要遍历数列,故第一阶段时间复杂度
②第二阶段
快排时间复杂度
共有m个桶,每个桶中元素个数
一个桶快排的时间复杂度
所有桶快排的时间复杂度
第二阶段时间复杂度
综上,桶排序时间复杂度
注:当桶个数M趋近于元素个数N时,趋近于0,所以所有桶的时间复杂度趋近于0,
此时,桶排序的时间复杂度 = 计数排序时间复杂度.
5.空间复杂度:
空间复杂度
M:待排数列所占空间;
N:桶所占空间.
6.使用范围:非负数据;较为集中数据.
7.优点:
①桶越多,时间效率越高(由时间复杂度第二阶段可以看出,M越大,越小,时间复杂度越低);
②桶排序是稳定的.
8.缺点:
①桶越多,空间复杂度越高(由空间复杂度可以看出,M越大,空间复杂越高);
②处理的数据不能太分散.