排序算法(七)---桶排序

Posted 青梅竹码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法(七)---桶排序相关的知识,希望对你有一定的参考价值。

  桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。

理解:

  桶排序是计数排序的变种,把计数排序中相邻的m个"小桶"放到一个"大桶"中,在分完桶后,对每个桶进行排序(一般用快排),然后合并成最后的结果。桶排序是稳定算法。


基本思想:

  桶排序的思想近乎彻底的分治思想


效率分析:

  以牺牲空间复杂度换取时间复杂度的排序方式,不是比较排序类。 

1、假设有n个元素,m个桶; 

时间复杂度为 O(n+m*n/m*log(n/m))=o(n+nlogn-nlogm) 

空间复杂度:O(n+m); 

当m越大时,趋近于n时,时间复杂度达到最优为:O(n)此时空间复杂度达到最大; 

2、算法思想(假设每个桶的容量是相同的) 

(1)设置桶的容量大小为n/m; 

(2)每个桶是有序的,如:桶2 里面的最小值大于桶1 的最大值;如:要对大小为[1..1000]范围内的n个整数A[1..n]排序, 首先,可以把桶设为大小为10的范围,具体而言,设集合B[1]存储[1..10]的整数,集合B[2]存储 (10..20]的整数,……集合B[i]存储( (i-1)*10, i*10]的整数,i = 1,2,..100。总共有 100个桶。 

3)将每个桶的数字选择某种排序算法(可以是堆排序、快速排序或者桶排序)进行排序; 

(4)桶序从小到大,依次输出每个桶的数字; 

3、缺点: 

(1)空间复杂度高; 

(2)适合待排序的数值分布在一定范围内的序列。


以上是关于排序算法(七)---桶排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法——桶排序

常用排序算法

十大经典排序算法

java实现12种排序算法

十大经典排序算法总结(桶排序)

算法排序算法之桶排序