博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单理解桶排序
阅读量:6435 次
发布时间:2019-06-23

本文共 859 字,大约阅读时间需要 2 分钟。

  桶排序,利用编号分组存储数字,再利用编号合并分组的一种算法排序。

  举个易于理解的例子:

  一组数字,9,3,4,0,2,8,5,1,7,6,11,10,18,15,17,12,16,13,19,14

  我们把这组数字分组编号成10个桶装起来,但怎么编号分组呢?

  这里我们利用数字范围来对数字进行分桶。首先,最大数减去最小数,获取这组数字的取值范围,然后,我们让这个取值范围除以桶数,获取一个桶的取值范围,既然知道一个桶的取值范围,那么,通过对比每个数字占用多少个桶,我们就可以获取这个数字所对应的桶的编号了。(换一句话说,就是每个数字占用多少个取值范围,这里的桶其实就是数字的取值范围的具体化东西)

  利用上面的例子做解释:

  上面的最大值是19,最小值是0,所以这组数的取值范围是:  19-0=19。

  我们要用10个桶来分装这组数字,则一个桶的取值范围是:  19 / 10 = 1.9。

  所以,一个桶的取值范围就是:  1.9。

  知道了这些之后,我们怎么知道每个数字所对应的桶的编号呢?

  我们让每个数字减去最小值再除以一个桶的取值范围就可以获得这个数字所对应的桶编号了,为什么这么说呢?因为我们就是利用数值范围来分桶的,所以理所当然的也是获取每个数字的取值范围来分桶的编号,而最小值就是我们的取值标准,当然是要每个数字都减去它才能准确的获取每个数的取值范围了。

  根据上面的解释,那么,第一个数字的桶编号就是:  (9-0) / 1.9 = 4.7368·······

  当然为了确保编号为整数,我们必须给编号取整,这里我们是向上取整,所以第一个数:9的桶编号就是5啦。

  其他的数字获取桶编号都是同样的原理,这里就不再重复叙述了。

  下面是js程序的实现:

    
桶排序

转载于:https://www.cnblogs.com/loveyoume/p/6286929.html

你可能感兴趣的文章
Java 多线程 - 线程 - 中断
查看>>
At first!
查看>>
python学习系列之python装饰器基础(2)---装饰含返回值的函数
查看>>
神奇的负载均衡
查看>>
kubernetes log 流式数据处理
查看>>
d3.js——对柱状图和折线图的封装
查看>>
sqlserver2008使用设置sa用户登录步骤
查看>>
我的友情链接
查看>>
MYSQL外键(Foreign Key)的使用
查看>>
xen虚拟化实战系列(七)之xen虚拟机VNC访问配置
查看>>
Open***2.4.3 安装部署文档(实战)
查看>>
Junit 笔记
查看>>
golang思考之运行速度之函数调用
查看>>
AndroidPN的学习研究(三)源码流程分析
查看>>
PowerCLI: “WARNING: There were one or more problems with the server certificate”
查看>>
千万级pvj架构设计
查看>>
我的友情链接
查看>>
数据库学习笔记--常用SQL语句
查看>>
客户故事:4家银行如何打造新一代移动金融中心
查看>>
【新书推荐】“十三五”国家重点出版规划项目《网络安全技术及应用》第3版出版发行...
查看>>