时间:2021-05-26
本文实例讲述了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,0distribute(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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Python实现的基数排序算法。分享给大家供大家参考,具体如下:基数排序(radixsort)属于“分配式排序”(distributionsort
本文实例讲述了PHP排序算法之基数排序(RadixSort)。分享给大家供大家参考,具体如下:基数排序在《大话数据结构》中并未讲到,但是为了凑齐八大排序算法,我
C++基数排序 大家好,今天带来的是自己实现的用C++完成基数排序.在数据结构,算法分析和程序设计的学习过程中,我们经常也无法避免的要学到排序的算法.排序算法是
本文实例讲述了JS实现的计数排序与基数排序算法。分享给大家供大家参考,具体如下:计数排序计数排序就是简单的桶排序,一个桶代表数组中一个数出现的个数,所以需要一个
基数排序(桶排序)介绍基数排序(radixsort)属于“分配式排序”(distributionsort),又称“桶子法”(bucketsort)或binsor