JS使用队列对数组排列,基数排序算法示例

 更新时间:2019年03月02日 08:58:48   作者:白杨-M   我要评论
这篇文章主要介绍了JS使用队列对数组排列,基数排序算法,涉及javascript队列的定义、使用,基数排序实现方法等相关操作技巧,需要的朋友可以参考下

本文实例讲述了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.jb51.net/code/HtmlJsRun测试上述代码,可得如下运行结果:

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.sxglgf.com/aideddesign/paixu_ys

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • 基于Bootstrap实现tab标签切换效果

    基于Bootstrap实现tab标签切换效果

    这篇文章主要为大家详细介绍了基于Bootstrap实现tab标签切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • SWFObject基本用法实例分析

    SWFObject基本用法实例分析

    这篇文章主要介绍了SWFObject基本用法,实例分析了SWFObject操作Flash文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • JS面向对象编程详解

    JS面向对象编程详解

    这篇文章主要为大家详细介绍了JS面向对象编程,帮助大家更详细的对JS面向对象进行学习,感兴趣的朋友可以参考一下
    2016-03-03
  • js中判断变量类型函数typeof的用法总结

    js中判断变量类型函数typeof的用法总结

    下面小编就为大家带来一篇js中判断变量类型函数typeof的用法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 如何提高javascript加载速度

    如何提高javascript加载速度

    本文主要对提高javascript加载速度的方法进行介绍,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • js方法数据验证的简单实例

    js方法数据验证的简单实例

    下面小编就为大家带来一篇js方法数据验证的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • 给所有的超级练级都加上onmousemove时间的js代码

    给所有的超级练级都加上onmousemove时间的js代码

    给所有的超级练级都加上onmousemove时间的js代码...
    2007-08-08
  • 原生JS实现圆环拖拽效果

    原生JS实现圆环拖拽效果

    这篇文章主要为大家详细介绍了原生JS写一个环形的鼠标滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • js实现iframe动态调整高度的代码

    js实现iframe动态调整高度的代码

    iframe,尤其是不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是iframe的大小却不像层那样可以“伸缩自如”,所以带来了使用上的麻烦,给iframe设置高度的时候多了也不好,少了更是不行,现在,让我来告诉大家一种iframe动态调整高度的方法,主要是以下JS函数:
    2008-01-01
  • Bootstrap table学习笔记(2) 前后端分页模糊查询

    Bootstrap table学习笔记(2) 前后端分页模糊查询

    这篇文章主要为大家分享了Bootstrap table学习笔记,前后端分页模糊查询,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05

最新评论