排序算法(七)---桶排序
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)适合待排序的数值分布在一定范围内的序列。
以上是关于排序算法(七)---桶排序的主要内容,如果未能解决你的问题,请参考以下文章