使用队列对数组排列,基数排序
<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
原文链接:https://www.f2er.com/js/403382.html