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 相关文章推荐
商城常用滚动的焦点图效果代码简单实用
Mar 28 Javascript
iframe父页面获取子页面参数的方法
Feb 21 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
jQuery插件windowScroll实现单屏滚动特效
Jul 14 Javascript
使用vue.js开发时一些注意事项
Apr 27 Javascript
JS中如何实现复选框全选功能
Dec 19 Javascript
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
Vue.js单向绑定和双向绑定实例分析
Aug 14 Javascript
React注册倒计时功能的实现
Sep 06 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
Sep 26 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 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
资料注册后发信小技巧
2006/10/09 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
php 多文件上传的实现实例
2016/10/23 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
python 2.7.14安装图文教程
2018/04/08 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
人力资源专业推荐信
2013/11/29 职场文书
班风口号
2014/06/18 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
如何在python中实现ECDSA你知道吗
2021/11/23 Python
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis