使用队列对数组排列,基数排序

前端之家收集整理的这篇文章主要介绍了使用队列对数组排列,基数排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用队列对数组排列,基数排序
.dataStore = []; .enqueue = enqueue;添加一个元素 .dequeue = dequeue;删除队首的元素 .theFront = theFront; .back = back; .toStrings = toStrings;显示队列内的所有元素 .empty = empty; <span style="color: #0000ff;">function<span style="color: #000000;"> enqueue(element){
<span style="color: #0000ff;">this
<span style="color: #000000;">.dataStore.push(element);
}

<span style="color: #0000ff;">function<span style="color: #000000;"> dequeue(){
<span style="color: #0000ff;">return <span style="color: #0000ff;">this<span style="color: #000000;">.dataStore.shift();
}

<span style="color: #0000ff;">function<span style="color: #000000;"> theFront(){
<span style="color: #0000ff;">return <span style="color: #0000ff;">this.dataStore[0<span style="color: #000000;">];
}

<span style="color: #0000ff;">function<span style="color: #000000;"> back(){
<span style="color: #0000ff;">return <span style="color: #0000ff;">this.dataStore[<span style="color: #0000ff;">this.dataStore.length-1<span style="color: #000000;">];
}

<span style="color: #0000ff;">function<span style="color: #000000;"> toStrings(){
<span style="color: #0000ff;">return <span style="color: #0000ff;">this<span style="color: #000000;">.dataStore;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> empty(){
<span style="color: #0000ff;">if(<span style="color: #0000ff;">this.dataStore.length == 0<span style="color: #000000;">){
<span style="color: #0000ff;">return <span style="color: #0000ff;">true<span style="color: #000000;">;
}<span style="color: #0000ff;">else<span style="color: #000000;">{
<span style="color: #0000ff;">return <span style="color: #0000ff;">false<span style="color: #000000;">;
}
}
<span style="color: #008000;">/*<span style="color: #008000;">基数排序

  • nums :需要排序的数组

  • queues :数组,里面元素是队列

  • n :队列的格式,这里为10个

  • digit :传入1,则先按个位上的数字排序;传入10,则按十位上的数字排序

  • <span style="color: #008000;">*/
    <span style="color: #0000ff;">function<span style="color: #000000;"> distribute(nums,queues,n,digit){
    <span style="color: #0000ff;">for(<span style="color: #0000ff;">var i = 0;i < n;i++<span style="color: #000000;">){
    <span style="color: #0000ff;">if(digit == 1<span style="color: #000000;">){
    queues[nums[i]%10<span style="color: #000000;">].enqueue(nums[i]);
    }<span style="color: #0000ff;">else <span style="color: #0000ff;">if(digit == 10<span style="color: #000000;">){
    queues[Math.floor(nums[i]/10)].enqueue(nums[i]);
    }<span style="color: #0000ff;">else<span style="color: #000000;">{

     }

    }
    }

<span style="color: #0000ff;">function<span style="color: #000000;"> collect(queues,nums){
<span style="color: #0000ff;">var i = 0<span style="color: #000000;">;
<span style="color: #0000ff;">for(<span style="color: #0000ff;">var j = 0;j < 10;j++<span style="color: #000000;">){
<span style="color: #0000ff;">while(!<span style="color: #000000;">queues[j].empty()){
nums[i++] =<span style="color: #000000;"> queues[j].dequeue();
}
}
}

<span style="color: #008000;">/<span style="color: #008000;">测试程序<span style="color: #008000;">/
<span style="color: #0000ff;">var queues =<span style="color: #000000;"> [];
<span style="color: #0000ff;">for(<span style="color: #0000ff;">var i = 0;i < 10;i++<span style="color: #000000;">){
queues[i] = <span style="color: #0000ff;">new<span style="color: #000000;"> Queue();
}
<span style="color: #0000ff;">var nums =<span style="color: #000000;"> [];
<span style="color: #0000ff;">for(<span style="color: #0000ff;">var i = 0;i < 10;i++<span style="color: #000000;">){
nums[i] = Math.floor(Math.random()*101<span style="color: #000000;">);
}
console.log("开始的nums: "+nums);<span style="color: #008000;">//<span style="color: #008000;">24,72,90,84,49,69,8,30,50,0
distribute(nums,10,1<span style="color: #000000;">);
collect(queues,nums);
distribute(nums,10,10<span style="color: #000000;">);
collect(queues,nums);
console.log("排序后的nums: "+nums);<span style="color: #008000;">//<span style="color: #008000;">0,24,90

 

猜你在找的JavaScript相关文章