排序算法——桶排序算法

以牺牲空间复杂度换取时间复杂度的排序方式,不是比较排序类。
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)适合待排序的数值分布在一定范围内的序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值