Pseudo Code
Урок 4 из 9 курса Поразрядная сортировка — серия DSA на Coddy.
countingSortByDigit(array, exp):
n = length(array)
output = array of size n
count = array of 10 zeros
for each x in array: # подсчет каждой цифры
count[(x / exp) % 10] += 1
for d from 1 to 9: # накопленные суммы -> позиции
count[d] += count[d - 1]
for k from n-1 down to 0: # размещение с конца (устойчиво)
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 — это разряд: 1 для единиц, 10 для десятков, 100 для сотен.
(x / exp) % 10извлекает эту цифру. - countingSortByDigit — это устойчивая сортировка по одной цифре: она подсчитывает, сколько раз встречается каждая цифра, преобразует эти значения в позиции, а затем размещает элементы от конца к началу для сохранения порядка.
- radixSort просто запускает этот проход один раз для каждого разряда, останавливаясь, когда
expпревышает самое большое число.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Поразрядная сортировка — серия DSA
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)