Pseudo Code
Lição 4 de 9 do curso Radix Sort - Série DSA da Coddy.
countingSortByDigit(array, exp):
n = length(array)
output = array of size n
count = array of 10 zeros
for each x in array: # tally each digit
count[(x / exp) % 10] += 1
for d from 1 to 9: # running totals -> positions
count[d] += count[d - 1]
for k from n-1 down to 0: # place from the back (stable)
d = (array[k] / exp) % 10
count[d] -= 1
output[count[d]] = array[k]
return output
radixSort(array):
max = largest value in array
exp = 1
while max / exp > 0:
array = countingSortByDigit(array, exp)
exp = exp * 10- exp é o valor posicional: 1 para unidades, 10 para dezenas, 100 para centenas.
(x / exp) % 10extrai esse dígito. - countingSortByDigit é uma ordenação estável em um único dígito: ele conta quantos de cada dígito aparecem, transforma essas contagens em posições e, em seguida, coloca os elementos de trás para frente para preservar a ordem.
- radixSort apenas executa essa passagem uma vez por dígito, parando quando
expultrapassa o maior número.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Radix Sort - Série DSA
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)