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原型对象通俗&quot;唱法&quot;
Dec 27 Javascript
js之onload事件的一点使用心得
Aug 14 Javascript
js左侧三级菜单导航实例代码
Sep 13 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
Dec 08 Javascript
js实现简单的验证码
Dec 25 Javascript
Highcharts入门之简介
Aug 02 Javascript
Bootstrap图片轮播效果详解
Oct 17 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
Mar 20 Javascript
vue实现多个元素或多个组件之间动画效果
Sep 25 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 Javascript
浅谈目前可以使用ES10的5个新特性
Jun 25 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
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 ADODB使用方法集锦
2008/03/25 PHP
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
python中adb有什么功能
2020/06/07 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
英文自荐信格式
2013/11/28 职场文书
家长对小学生的评语
2014/01/28 职场文书
土木工程专业推荐信
2014/02/19 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
标枪加油稿
2015/07/22 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL