"Introdução aos Algoritmos" ʚNotas de Leitura e Análise ɞ Capítulo 8 - Classificação de Número Cardinal (incluindo implementação de código de versão js)

O que é radix sort

Conforme mostrado na figura abaixo, organizamos as unidades, as dezenas e as centenas em ordem, e então podemos obter um processo de classificação completo

Processo de algoritmo

  1. Como cada base pode ter apenas 0-9, ela pode ser executada em cada coluna计数排序
  2. Loop por todas as colunas

Implementação de algoritmo

function createZero(num, targetLength) {
    
    
    let t = targetLength - num.toString().length
    let str = ''
    while (t > 0) {
    
    
        t--;
        str += '0'
    }
    return str + num.toString()
}

function RadixSort(arr) {
    
    
    let len = arr.length
    let max = Math.max.apply(null, arr)
    const targetLength = max.toString().length
    let strArr = arr.map(t => createZero(t,targetLength))
    let map = {
    
    }
    for (let j = targetLength - 1; j >= 0; j--) {
    
    
        for (let i = 0; i < len; i++) {
    
    
            map[Number(strArr[i][j])] ? map[Number(strArr[i][j])].push(strArr[i]) : map[Number(strArr[i][j])] = [strArr[i]]
        }
        let temp = [];
        for (let q = 0; q < 10; q++) {
    
    
            temp = map[q] ? temp.concat(map[q]) : temp
        }
        map = []
        strArr = temp
    }
    let result = strArr.map(s => Number(s))
    return result
}

module.exports = RadixSort

Acho que você gosta

Origin blog.csdn.net/weixin_38616850/article/details/110926339
Recomendado
Clasificación