Поразрядная сортировка
Сортировка по разрядам — единицам, десяткам, сотням — устойчивыми проходами подсчёта.
1function radixSortLSD(a: number[]): number[] {2 const max = Math.max(...a)3 4 for (let exp = 1; Math.floor(max / exp) > 0; exp *= 10) {5 countingByDigit(a, exp)6 }7 return a8}9 10function countingByDigit(a: number[], exp: number): void {11 const counts = new Array(10).fill(0)12 for (const v of a) counts[digit(v, exp)]++13 14 for (let d = 1; d < 10; d++) counts[d] += counts[d - 1]15 16 const out = new Array(a.length)17 for (let i = a.length - 1; i >= 0; i--) {18 const d = digit(a[i], exp)19 out[--counts[d]] = a[i]20 }21 for (let i = 0; i < a.length; i++) a[i] = out[i]22}23 24function digit(v: number, exp: number): number {25 return Math.floor(v / exp) % 1026}Проблема
Отсортировать много целых чисел быстро и без сравнений. Сравнительные методы упираются в O(n log n) — нижняя граница сравнений. Целые числа с узкими разрядами можно сортировать быстрее.
Что вы видите
Столбики. Проход по разряду единиц — числа перегруппировываются по цифре; проход по десяткам — уже не ломает порядок единиц; сотни — финал. Каждый проход — устойчивая раскладка подсчётом.
Как это работает
LSD-схема: сортируем по младшему разряду, затем по следующему — устойчивость проходов копит порядок. d разрядов × O(n + 10) на проход = O(d·n). Ни одного «меньше-больше» между элементами.
Пошаговый разбор
- 01
Проход
Устойчивая сортировка подсчётом по текущему разряду.
- 02
Устойчивость
Равные цифры сохраняют прошлый порядок.
- 03
Разряды
Единицы → десятки → сотни.
- 04
Финал
Полный порядок после старшего разряда.
Complexity и ограничения
Целые (или отображаемые в разряды). d = число разрядов максимума. Память O(n + b).
Edge cases
- Все одинаковые
Один проход фактически решает.
- Разной длины
Младшие разряды отсутствующих = 0.
- Отрицательные
Сдвигом или отдельным знаком.
Где встречается в реальности
Гигантские выборки
Миллионы int-ключей — стандартный выбор поразрядной.
Суффиксные массивы
Построение через поразрядные проходы.
Соревнования
Классика ускорения на больших n.
Связанные алгоритмы
«Сортировка, которая ничего не сравнивает»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.