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 相关文章推荐
让网页根据不同IE版本显示不同的内容
Feb 08 Javascript
JavaScript中最简洁的编码html字符串的方法
Oct 11 Javascript
JavaScript基础语法、dom操作树及document对象
Dec 02 Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 Javascript
jquery插件corner实现圆角边框的方法
Mar 09 Javascript
javascript学习小结之prototype
Dec 03 Javascript
js HTML5上传示例代码完整版
Oct 10 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
Mar 27 Javascript
使用D3.js创建物流地图的示例代码
Jan 27 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 Javascript
jQuery创建折叠式菜单
Jun 15 jQuery
vue+openlayers绘制省市边界线
Dec 24 Vue.js
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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
Javascript----文件操作
2007/01/18 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
python实现在字符串中查找子字符串的方法
2015/07/11 Python
Python决策树分类算法学习
2017/12/22 Python
Python实现学生成绩管理系统
2020/04/05 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python实现简单图书管理系统
2019/11/22 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
中国跨境电商:Tomtop
2017/03/16 全球购物
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
建筑专业毕业生推荐信
2013/11/21 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
社会学专业求职信
2014/07/17 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书