js算法排序-基數(shù)排序

/**
 * 基數(shù)排序
 * 覺(jué)得這個(gè)排序算法很巧妙。
 * 可以從低位到高位排,或者高位到低位排,下面是低位到高位
 * 先排每個(gè)數(shù)個(gè)位數(shù)字[0-9],根據(jù)數(shù)字放到不同桶中
 * 然后將桶連接,在按每個(gè)數(shù)十位數(shù)字[0-9]排
 * 依次類推,根據(jù)列表中最大數(shù)字位數(shù)循環(huán)就行
 * @param {*} arr 
 * @param {*} maxDigit 
 */
function radixSort(arr, maxDigit) {
    var mod = 10
    var dev = 1
    var count = []
    for (var i = 0; i < maxDigit; i++, dev *= 10, mod *= 10) {
        for (var j = 0; j < arr.length; j++) {
            var bucket = parseInt((arr[j] % mod) / dev)
            console.log(bucket, arr[j])
            if (!count[bucket]) {
                count[bucket] = []
            }
            count[bucket].push(arr[j])
        }

        var sortedIndex = 0
        for (var x = 0; x < count.length; x++) {
            // console.log(count[x])
            if (count[x]) {
                count[x].map(item => {
                    // console.log(item)
                    arr[sortedIndex++] = item
                })
            }
        }
        //清空之前的桶
        count = []
    }
    console.log(arr)
}

radixSort(arr, 2)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容