最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:00:36
文档

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

JS使用队列对数组排列,基数排序算法示例:本文实例讲述了JS使用队列对数组排列,基数排序算法。分享给大家供大家参考,具体如下: /* * 使用队列对数组排列,基数排序 *对于0~99的数字,基数排序将数组集扫描两次。 * 第一次按个位上的数字进行排序, * 第二次按十位上的数字进行排序 * */ f
推荐度:
导读JS使用队列对数组排列,基数排序算法示例:本文实例讲述了JS使用队列对数组排列,基数排序算法。分享给大家供大家参考,具体如下: /* * 使用队列对数组排列,基数排序 *对于0~99的数字,基数排序将数组集扫描两次。 * 第一次按个位上的数字进行排序, * 第二次按十位上的数字进行排序 * */ f


本文实例讲述了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.jb51.net/aideddesign/paixu_ys

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

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

文档

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

JS使用队列对数组排列,基数排序算法示例:本文实例讲述了JS使用队列对数组排列,基数排序算法。分享给大家供大家参考,具体如下: /* * 使用队列对数组排列,基数排序 *对于0~99的数字,基数排序将数组集扫描两次。 * 第一次按个位上的数字进行排序, * 第二次按十位上的数字进行排序 * */ f
推荐度:
标签: js 排序 示例
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top