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 相关文章推荐
Ext JS添加子组件的误区探讨
Jun 28 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
Apr 03 Javascript
js的各种排序算法实现(总结)
Jul 23 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
Aug 24 Javascript
移动端js触摸事件详解
Sep 18 Javascript
jquery自定义表单验证插件
Oct 12 Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 Javascript
Angular.js中angular-ui-router的简单实践
Jul 18 Javascript
关于express与koa的使用对比详解
Jan 25 Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
Dec 13 Javascript
在vue中使用jsx语法的使用方法
Sep 30 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
php中过滤非法字符的具体实现
2013/10/29 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
简述vue中的config配置
2018/01/23 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
js实现简单的打印表格
2020/01/15 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
python Django模板的使用方法
2016/01/14 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
python 编码规范整理
2018/05/05 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
python多进程读图提取特征存npy
2019/05/21 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
拾金不昧表扬稿
2015/01/16 职场文书
离婚起诉书范本
2015/05/18 职场文书