JS使用队列对数组排列,基数排序算法示例


Posted in Javascript onMarch 02, 2019

本文实例讲述了JS使用队列对数组排列,基数排序算法。分享给大家供大家参考,具体如下:

/*
* 使用队列对数组排列,基数排序
*对于0~99的数字,基数排序将数组集扫描两次。
* 第一次按个位上的数字进行排序,
* 第二次按十位上的数字进行排序
* */
function Queue(){
  this.dataStore = [];//存放队列的数组,初始化为空
  this.enqueue = enqueue;//向队列尾部添加一个元素
  this.dequeue = dequeue;//删除队首的元素
  this.theFront = theFront;//读取队首的元素
  this.back = back;//对取队尾的元素
  this.toStrings = toStrings;//显示队列内的所有元素
  this.empty = empty;//判断队列是否为空
}
function enqueue(element){
  this.dataStore.push(element);
}
function dequeue(){
  return this.dataStore.shift();
}
function theFront(){
  return this.dataStore[0];
}
function back(){
  return this.dataStore[this.dataStore.length-1];
}
function toStrings(){
  return this.dataStore;
}
function empty(){
  if(this.dataStore.length == 0){
    return true;
  }else{
    return false;
  }
}
/*基数排序
* nums :需要排序的数组
* queues :数组,里面元素是队列
* n :队列的格式,这里为10个
* digit :传入1,则先按个位上的数字排序;传入10,则按十位上的数字排序
 * */
function distribute(nums,queues,n,digit){
  for(var i = 0;i < n;i++){
    if(digit == 1){
      queues[nums[i]%10].enqueue(nums[i]);
    }else if(digit == 10){
      queues[Math.floor(nums[i]/10)].enqueue(nums[i]);
    }else{
    }
  }
}
function collect(queues,nums){
  var i = 0;
  for(var j = 0;j < 10;j++){
    while(!queues[j].empty()){
      nums[i++] = queues[j].dequeue();
    }
  }
}
/*测试程序*/
var queues = [];
for(var i = 0;i < 10;i++){
  queues[i] = new Queue();
}
var nums = [];
for(var i = 0;i < 10;i++){
  nums[i] = Math.floor(Math.random()*101);
}
console.log("开始的nums: "+nums);//24,72,90,84,49,69,8,30,50,0
distribute(nums,queues,10,1);
collect(queues,nums);
distribute(nums,queues,10,10);
collect(queues,nums);
console.log("排序后的nums: "+nums);//0,8,24,30,49,50,69,72,84,90

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JS使用队列对数组排列,基数排序算法示例

Javascript 相关文章推荐
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
jquery使用append(content)方法注意事项分享
Jan 06 Javascript
jquery通过visible来判断标签是否显示或隐藏
May 08 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
js实现多图左右切换功能
Aug 04 Javascript
Google 地图事件实例讲解
Aug 06 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
javascript使用正则实现去掉字符串前面的所有0
Jul 23 Javascript
在iFrame子页面里实现模态框的方法
Aug 17 Javascript
微信小程序实现二维码签到考勤系统
Jan 16 Javascript
vue使用openlayers实现移动点动画
Sep 24 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 Javascript
VUE引入第三方js包及调用方法讲解
Mar 01 #Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
Mar 01 #Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 #Javascript
Angular7.2.7路由使用初体验
Mar 01 #Javascript
vuex实现及简略解析(小结)
Mar 01 #Javascript
简单两步使用node发送qq邮件的方法
Mar 01 #Javascript
Vue实现类似Spring官网图片滑动效果方法
Mar 01 #Javascript
You might like
php 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
详谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/25 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python 操作文件的基本方法总结
2017/08/10 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Django Rest framework频率原理与限制
2019/07/26 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
英国香水店:The Perfume Shop
2017/03/27 全球购物
如何利用find命令查找文件
2015/02/07 面试题
机械制造毕业生求职信
2014/03/03 职场文书
城管综合整治方案
2014/05/01 职场文书
七一建党日演讲稿
2014/09/05 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
Python 全局空间和局部空间
2022/04/06 Python
Golang入门之计时器
2022/05/04 Golang