JavaScript 基数排序算法实现:基于队列的数组排列
本文介绍如何使用 JavaScript 中的队列数据结构实现基数排序算法。通过示例代码展示如何对 0~99 的数字数组进行按位排序,包括个位和十位的分配与收集过程,帮助开发者理解基数排序的核心逻辑及在 JS 中的具体应用。
JavaScript 基数排序算法实现:基于队列的数组排列
本文通过具体实例,讲解如何利用 JavaScript 中的队列数据结构来实现基数排序算法,并对数组进行排序。内容旨在为读者提供参考与学习素材。
/*
* 使用队列对数组排列,基数排序
*对于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)来测试上述代码,从而查看实际的运行结果。

此外,这里还推荐一款关于排序算法的演示工具,供读者参考使用:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: http://tools.jb51.net/aideddesign/paixu_ys
如需了解更多 JavaScript 相关内容,建议查阅本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》。
希望本文提供的关于 JavaScript 程序设计的知识能对大家有所帮助。
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
