欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS使用隊列對數組排列,基數排序算法示例

 更新時間:2019年03月02日 08:58:47   作者:白楊-M  
這篇文章主要介紹了JS使用隊列對數組排列,基數排序算法,涉及javascript隊列的定義、使用,基數排序實現方法等相關操作技巧,需要的朋友可以參考下

本文實例講述了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程序設計有所幫助。

相關文章

  • JavaScript中reduce()的用法實例

    JavaScript中reduce()的用法實例

    reduce()方法接收一個函數作為累加器(accumulator),數組中的每個值(從左到右)開始縮減,最終為一個值,下面這篇文章主要給大家介紹了關于JavaScript中reduce()的用法實例,需要的朋友可以參考下
    2022-05-05
  • 在Html中使用Requirejs進行模塊化開發(fā)實例詳解

    在Html中使用Requirejs進行模塊化開發(fā)實例詳解

    在前端模塊化的時候,不僅僅是js需要進行模塊化管理,html有時候也需要模塊化管理。這里就介紹下如何通過requirejs,實現html代碼的模塊化開發(fā)
    2016-04-04
  • layui按條件隱藏表格列的實例

    layui按條件隱藏表格列的實例

    今天小編就為大家分享一篇layui按條件隱藏表格列的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 分享JS四種好玩的黑客背景效果代碼

    分享JS四種好玩的黑客背景效果代碼

    大家好,本篇文章分享的是四種好玩的黑客背景效果JS代碼,感興趣的同學趕緊來試試吧,覺得還不錯的話記得收藏一下哦,方便下次瀏覽
    2021-11-11
  • bootstrap多層模態(tài)框滾動條消失的問題

    bootstrap多層模態(tài)框滾動條消失的問題

    本篇文章主要介紹了bootstrap多層模態(tài)框滾動條消失的問題,具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • JavaScript的內置對象Math和字符串詳解

    JavaScript的內置對象Math和字符串詳解

    這篇文章主要為大家介紹了JavaScript的內置對象Math和字符串,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • JavaScript中的this/call/apply/bind的使用及區(qū)別

    JavaScript中的this/call/apply/bind的使用及區(qū)別

    這篇文章主要介紹了JavaScript中的this/call/apply/bind的使用及區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • JavaScript實現滑動導航欄效果

    JavaScript實現滑動導航欄效果

    這篇文章主要為大家詳細介紹了JavaScript實現滑動導航欄效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • arcgis for js 修改infowindow樣式的方法

    arcgis for js 修改infowindow樣式的方法

    下面小編就為大家?guī)硪黄猘rcgis for js 修改infowindow樣式的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • zTree獲取當前節(jié)點的下一級子節(jié)點數實例

    zTree獲取當前節(jié)點的下一級子節(jié)點數實例

    下面小編就為大家?guī)硪黄獄Tree獲取當前節(jié)點的下一級子節(jié)點數實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論