本文实例讲述了JS桶排序的简单理解与实现方法。分享给大家供大家参考,具体如下:
桶排序,利用编号分组存储数字,再利用编号合并分组的一种算法排序。
举个易于理解的例子:
一组数字,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程序的实现:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>桶排序</title> <meta name="keywords" content="关键字列表" /> <meta name="description" content="网页描述" /> <link rel="stylesheet" type="text/css" href="" /> <style type="text/css"></style> <script type="text/javascript"> //桶排序,参数数组,桶的个数,这里用数组模拟桶 var cask=function (arr,caskCount){ //不是数组,返回false if(toString.call(arr) != '[object Array]'){ return false; } //获取数组的长度 var len = arr.length; if(len <=1){ return arr;//长度小于等于1不用排序 } var list = [],//装桶的桶,用它来控制存储桶的编号 result = [],//返回的结果 max = arr[0], min = arr[0]; //默认桶的个数为10 var caskCount = parseInt(caskCount) > 0 "color: #ff6600">在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
JS,桶排序
更新动态
- 群星《试音慢曳DTS[WAV]
- 塞尔达公主多款发型概念图公开:干练短发超受欢迎
- 曝索尼联手乐高:《乐高地平线》即将在发布会公布!
- 全面退款!Epic等平台面向《对马岛》限制地区退款
- 群星《胭脂扣 音乐剧原声带》[320K/MP3][39.59MB]
- 群星《胭脂扣 音乐剧原声带》[FLAC/分轨][100.25MB]
- 群星《勇气家族 电视剧原声带》[320K/MP3]16.67MB]
- 哈迪斯2黑帝斯银白之颅图鉴及附魔效果一览 哈迪斯银白之颅操作介绍及祝福推荐
- 黑帝斯哈迪斯2全武器图鉴及附魔效果一览 全武器操作介绍及祝福推荐
- dnf龙袍套装属性与天空套对比
- 横山菁儿-三国志-燃烧的长江-1993-APE整轨
- [ABC唱片]-《李传韵-琴魂》[K2-018][K2CD]WAV+CUE
- 【ABC唱片】《黃河號子SACD-011》-WAV分轨
- 当《生化危机2:重制版》加入路径追踪:画面真实感显著提升!
- 《哈迪斯2》BOSS不让暂停惹恼玩家:我手柄没电了!