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 相关文章推荐
javascript 多种搜索引擎集成的页面实现代码
Jan 02 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
Dec 10 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
jquery实现通用的内容渐显Tab选项卡效果
Sep 07 Javascript
全面解析Bootstrap排版使用方法(标题)
Nov 30 Javascript
javascript设置和获取cookie的方法实例详解
Jan 05 Javascript
PassWord输入框代码分享
Jun 07 Javascript
javascript实现下雨效果
Mar 27 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
Apr 11 Javascript
微信小程序实现横向滚动导航栏效果
Dec 12 Javascript
JavaScript实现答题评分功能页面
Jun 24 Javascript
Vue监视数据的原理详解
Feb 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
模仿OSO的论坛(四)
2006/10/09 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
JavaScript Eval 函数使用
2010/03/23 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
python getopt 参数处理小示例
2009/06/09 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
Python高级用法总结
2018/05/26 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
好的自荐信包括什么内容
2013/11/07 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
园艺师求职信
2014/04/27 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
小学生表扬稿范文
2015/05/05 职场文书