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

首頁 > 開發(fā) > JS > 正文

JS實現(xiàn)的計數(shù)排序與基數(shù)排序算法示例

2024-05-06 16:41:15
字體:
供稿:網(wǎng)友

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

計數(shù)排序

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

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

基數(shù)排序

基數(shù)排序是多躺的桶排序

var radix = 16; // 基數(shù),可以為任何數(shù),越大趟數(shù)越小,但是桶數(shù)越多,最好根據(jù)最大數(shù)字進行定義。function _roundSort(arr, round, radix) {  var buckets = new Array(radix);  for (let i = 0; i < radix; i++) {    buckets[i] = [];  }  // 將數(shù)組中的數(shù)放進對應(yīng)的桶子中  for (let i = 0; i < arr.length; i++) {    let remainder = Math.floor(arr[i] / (radix ** (round - 1))) % radix;    buckets[remainder].push(arr[i]);  }  // 將數(shù)組重新根據(jù)桶子進行排序  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));


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长垣县| 南溪县| 和龙市| 大同市| 当涂县| 宜城市| 新丰县| 重庆市| 烟台市| 岢岚县| 扶沟县| 永胜县| 成安县| 乌拉特后旗| 汉沽区| 中阳县| 墨竹工卡县| 肇东市| 舟曲县| 武冈市| 郓城县| 中宁县| 临澧县| 建水县| 沿河| 和平县| 平陆县| 正阳县| 剑河县| 五家渠市| 台安县| 营口市| 张北县| 堆龙德庆县| 皮山县| 邛崃市| 长治市| 义马市| 顺平县| 金湖县| 寿光市|