国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS實現的計數排序與基數排序算法示例

2024-05-06 15:23:51
字體:
來源:轉載
供稿:網友

本文實例講述了JS實現的計數排序與基數排序算法。分享給大家供大家參考,具體如下:

計數排序

計數排序就是簡單的桶排序,一個桶代表數組中一個數出現的個數,所以需要一個和數組數字范圍一樣大的輔助數組,一般用在范圍小于100的排序,時間復雜度為O(n),空間復雜度為數組的數字范圍。

/** * 范圍在 start - end 之間的排序 * 計數排序需要輔助數組,該輔助數組的長度是待排序數組的范圍,所以一般用作范圍小于100的排序 */function countSort(arr, start, end) {  var len = arr.length;  // 桶數組  var suportArr = new Array(end - start + 1);  // 結果數組  var resArr = new Array(len);  // 初始化桶數組  for (i = 0; i < suportArr.length; i++) {    suportArr[i] = 0;  }  // 待排序數組中的數組出現,在桶子對應位置+1代表這個數出現的個數+1了  for (let i = 0; i < len; i++) {    suportArr[arr[i]]++;  }   // 從第1項開始,桶數組加上前一個桶的個數,現在輔助數組的意義變成了每一項的排名了。  for (let i = 1; i < suportArr.length; i++) {    suportArr[i] += suportArr[i - 1];  }  // 根據輔助數組的排名,從后往前賦值  for (let i = len - 1; i >= 0; i--) {    resArr[suportArr[arr[i]] - 1] = arr[i];    suportArr[arr[i]]--;  }  return resArr;}

基數排序

基數排序是多躺的桶排序

var radix = 16; // 基數,可以為任何數,越大趟數越小,但是桶數越多,最好根據最大數字進行定義。function _roundSort(arr, round, radix) {  var buckets = new Array(radix);  for (let i = 0; i < radix; i++) {    buckets[i] = [];  }  // 將數組中的數放進對應的桶子中  for (let i = 0; i < arr.length; i++) {    let remainder = Math.floor(arr[i] / (radix ** (round - 1))) % radix;    buckets[remainder].push(arr[i]);  }  // 將數組重新根據桶子進行排序  var index = 0;  for (let i = 0; i < buckets.length; i++) {    for (let j = 0; j < buckets[i].length; j++) {      arr[index++] = buckets[i][j];    }  }}function radixSort(arr, round) {  for (let i = 1; i <= round; i++) {    _roundSort(arr, i, radix);  }  return arr;}console.log(radixSort([10,5,5,50,0,155,4622,5,1,4,2154], 4));

PS:這里再為大家推薦一款關于排序的演示工具供大家參考:

在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.Vevb.com/aideddesign/paixu_ys

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 右玉县| 木里| 阳曲县| 鹿泉市| 安泽县| 汶川县| 洛浦县| 泰安市| 兴海县| 五寨县| 靖西县| 林口县| 内江市| 通山县| 三门峡市| 淮阳县| 花垣县| 简阳市| 万荣县| 安乡县| 海晏县| 承德县| 富顺县| 马鞍山市| 荃湾区| 绍兴市| 博爱县| 多伦县| 盐源县| 新竹县| 南丰县| 义乌市| 花垣县| 湄潭县| 泾川县| 光山县| 昌都县| 怀仁县| 化德县| 安福县| 杂多县|