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开源框架-jQuery使用手册(1)
Mar 10 Javascript
JavaScript Cookie 直接浏览网站分网址
Dec 08 Javascript
JavaScript Event学习第五章 高级事件注册模型
Feb 07 Javascript
原生js实现查找/添加/删除/指定元素的class
Apr 12 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 Javascript
Angularjs 制作购物车功能实例代码
Sep 14 Javascript
jQuery实现获取隐藏div高度的方法示例
Feb 09 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 Javascript
js实现一个简易计算器
Mar 30 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完整的日历类(CLASS)
2006/11/27 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
php 缩略图实现函数代码
2011/06/23 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
10 个经典PHP函数
2013/10/17 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
python中将字典转换成其json字符串
2014/07/16 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
初婚未育证明
2014/01/15 职场文书
市级文明单位申报材料
2014/05/07 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python