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

本文实例讲述了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使用队列对数组排列,基数排序算法示例 的全部内容, 来源链接: utcz.com/z/312772.html

回到顶部