桶排序或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子,本文详细的介绍了如何实现,感兴趣的可以了解一下
桶排序:整数
原理
原理简述:按照需要排序数组的实际情况,生成一个一定长度的一维数组,用于统计需要排序数组的不同数值的重复次数,完成统计后,再按顺序重复输出该数值
实现步骤:
- 确定需要排序数组的最大值和最小值
- 生成桶数组,并初始化
- 对需要排序数组进行统计,统计结果放入相应的桶中
- 循环输出桶,并替换原序列
模拟生成整数随机数
桶排序实现
完整版可运行程序
结果
时间复杂度计算
分析算法步骤:
- 确定需要排序数组的最大值和最小值 - 循环len次
- 生成桶数组,并初始化 - 循环bucketLen次
- 对需要排序数组进行统计,统计结果放入相应的桶中 - 循环len次
- 循环输出桶,并替换原序列 - 循环bucketLen+len次
总时间复杂度为 O(3*len + 2*bucketLen) .
P.S. 浮点型的桶排序,由于考虑到每个桶之间区间间隔难以确定、每个桶内储存的值数量不定等情况,笔者目前尚无法通过基础的C++运算来实现,使用一些高级功能又怕时间复杂度爆炸,最终得不偿失,不如转而研究其他类型的排序方法更值得。如果有大佬写出来浮点型桶排序,可以评论或者私信我,感谢!
** 参考书籍:啊哈!算法
到此这篇关于C++ 实现桶排序的示例代码的文章就介绍到这了,更多相关C++ 桶排序内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!