以牺牲空间复杂度换取时间复杂度的排序方式,不是比较排序类。
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)适合待排序的数值分布在一定范围内的序列。
排序算法——桶排序算法
最新推荐文章于 2025-03-05 12:23:17 发布