美文网首页
js算法排序-基数排序

js算法排序-基数排序

作者: 小猪佩奇的王子 | 来源:发表于2019-10-31 11:46 被阅读0次
    /**
     * 基数排序
     * 觉得这个排序算法很巧妙。
     * 可以从低位到高位排,或者高位到低位排,下面是低位到高位
     * 先排每个数个位数字[0-9],根据数字放到不同桶中
     * 然后将桶连接,在按每个数十位数字[0-9]排
     * 依次类推,根据列表中最大数字位数循环就行
     * @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)
    
    

    相关文章

      网友评论

          本文标题:js算法排序-基数排序

          本文链接:https://www.haomeiwen.com/subject/zdozvctx.html