js实现基数排序

  • 基数排序:是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。
  • 时间复杂度:O(nlog(r)m) (其中r为所采取的基数,而m为堆数)
  • 稳定性:稳定
  • 复杂性:较复杂
  • 应用:当范围已经知道,而且空间不是很重要的情况下
const radixSort = (arr) => {
    
    
    let length = arr.length
    if (length <= 1) {
    
    
        return arr
    }
    let maxDigit = String(parseInt(Math.max(...arr))).length // 取最大位数
    let mod = 10;
    let dev = 1;
    let counter = []
    for (let i = 0; i < maxDigit; i++, dev *= 10, mod *= 10) {
    
    
        for(let j = 0; j < arr.length; j++) {
    
    
            let bucket = parseInt((arr[j] % mod) / dev);
            counter[bucket] = counter[bucket] == null ? [] : counter[bucket]
            counter[bucket].push(arr[j]);
        }
        let pos = 0;
        for(let j = 0; j < counter.length; j++) {
    
    
            let value = null;
            if(counter[j]!=null) {
    
    
                while ((value = counter[j].shift()) != null) {
    
    
                    arr[pos++] = value;
                }
            }
        }
    }
    return arr;
}

上一篇: js实现归并排序
本文为本人学习总结,如有雷同,可联系本人立即修改或者删除

猜你喜欢

转载自blog.csdn.net/qq_40731976/article/details/111512053