JS使用队列对数组排列,基数排序算法示例
程序员文章站
2022-04-10 18:45:19
本文实例讲述了js使用队列对数组排列,基数排序算法。分享给大家供大家参考,具体如下:
/*
* 使用队列对数组排列,基数排序
*对于0~99的数字,基数排序将...
本文实例讲述了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:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
更多关于javascript相关内容感兴趣的读者可查看本站专题:《javascript数学运算用法总结》、《javascript数据结构与算法技巧总结》、《javascript数组操作技巧总结》、《javascript排序算法总结》、《javascript遍历算法与技巧总结》、《javascript查找算法技巧总结》及《javascript错误与调试技巧总结》
希望本文所述对大家javascript程序设计有所帮助。