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 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
js监听表单value的修改同步问题,跨浏览器支持
Dec 31 Javascript
Javascript学习笔记6 prototype的提出
Jan 11 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
javaScript 删除字符串空格多种方法小结
Oct 24 Javascript
JavaScript实现的简单幂函数实例
Apr 17 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
Mar 06 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
Aug 09 Javascript
如何在Angular应用中创建包含组件方法示例
Mar 23 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
原生JS实现相邻月份日历
Oct 13 Javascript
JavaScript仿京东轮播图效果
Feb 25 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判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
python读写二进制文件的方法
2015/05/09 Python
python实现控制COM口的示例
2019/07/03 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
python实现智能语音天气预报
2019/12/02 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
外语专业毕业生个人的自荐信
2013/11/19 职场文书
银行财务部实习生的自我鉴定
2013/11/27 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
博士生专家推荐信
2015/03/25 职场文书
质检员岗位职责范本
2015/04/07 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL