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 相关文章推荐
情人节之礼 js项链效果
Feb 13 Javascript
js 限制数字 js限制输入实现代码
Dec 04 Javascript
JS下拉缓冲菜单示例代码
Aug 30 Javascript
Javascript冒泡排序算法详解
Dec 03 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
Oct 29 Javascript
jquery转盘抽奖功能实现
Nov 13 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
Jun 25 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
Dec 24 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
May 24 Javascript
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
通用JS事件写法实现代码
2009/01/07 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
JS高级运动实例分析
2016/12/20 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
vue-loader教程介绍
2017/06/14 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
党员创先争优活动总结
2014/05/04 职场文书
综合实践活动总结
2014/05/05 职场文书
拉歌口号大全
2014/06/13 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server