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实现一个页面多个css样式实现
May 29 Javascript
使用jQuery操作Cookies的实现代码
Oct 09 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 Javascript
Jquery AJAX POST与GET之间的区别
Nov 14 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
May 11 Javascript
jQuery中:animated选择器用法实例
Dec 29 Javascript
jquery读取xml文件实现省市县三级联动的方法
May 29 Javascript
easyui combogrid实现本地模糊搜索过滤多列
May 13 Javascript
ES6 系列之 WeakMap的使用示例
Aug 06 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
纯js实现无缝滚动功能代码实例
Feb 21 Javascript
js实现列表按字母排序
Aug 11 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常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
php生成word并下载代码实例
2019/03/15 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
不错的JS中变量相关的细节分析
2007/08/13 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
详解vue axios中文文档
2017/09/12 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
python提取页面内url列表的方法
2015/05/25 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
python re模块常见用法例举
2021/03/01 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
预备党员自我批评思想汇报
2014/10/10 职场文书
2015年环保局工作总结
2015/05/22 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
react 项目中引入图片的几种方式
2021/06/02 Javascript
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技