JS使用隊列對數(shù)組排列,基數(shù)排序算法示例
本文實例講述了JS使用隊列對數(shù)組排列,基數(shù)排序算法。分享給大家供大家參考,具體如下:
/*
* 使用隊列對數(shù)組排列,基數(shù)排序
*對于0~99的數(shù)字,基數(shù)排序?qū)?shù)組集掃描兩次。
* 第一次按個位上的數(shù)字進行排序,
* 第二次按十位上的數(shù)字進行排序
* */
function Queue(){
this.dataStore = [];//存放隊列的數(shù)組,初始化為空
this.enqueue = enqueue;//向隊列尾部添加一個元素
this.dequeue = dequeue;//刪除隊首的元素
this.theFront = theFront;//讀取隊首的元素
this.back = back;//對取隊尾的元素
this.toStrings = toStrings;//顯示隊列內(nèi)的所有元素
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;
}
}
/*基數(shù)排序
* nums :需要排序的數(shù)組
* queues :數(shù)組,里面元素是隊列
* n :隊列的格式,這里為10個
* digit :傳入1,則先按個位上的數(shù)字排序;傳入10,則按十位上的數(shù)字排序
* */
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測試上述代碼,可得如下運行結(jié)果:

PS:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:
在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)學(xué)運算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
js 將input框中的輸入自動轉(zhuǎn)化成半角大寫(稅號輸入框)
本文主要介紹了稅號輸入框:將input框中的輸入自動轉(zhuǎn)化成半角大寫的方法,具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02
使用TypeScript?V8來改進您的JavaScript代碼
TypeScript?V8是一個強大的JavaScript類型系統(tǒng),它可以幫助你發(fā)現(xiàn)JavaScript代碼中的錯誤和潛在問題,并在編譯時捕獲它們,以便您可以解決它們,TypeScript?V8為JavaScript提供一系列的類型注釋,包括自定義類型和其他高級功能2023-08-08
小程序開發(fā)?page-container?頁面容器彈出對話框功能的實現(xiàn)
這篇文章主要介紹了小程序開發(fā)?page-container?頁面容器,彈出對話框,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
easyUI實現(xiàn)(alert)提示框自動關(guān)閉的實例代碼
下面小編就為大家?guī)硪黄猠asyUI實現(xiàn)(alert)提示框自動關(guān)閉的實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11

