Деление на ноль

Поразрядная сортировка с младшего разряда (LSD Radix Sort)

Эффективная сортировка чисел без их прямого сравнения друг с другом

Визуализация

Данные: Случайные
Данные:
Легенда цветов
в массиве раздача в корзину завершенный проход
Нажмите "Пуск" или листайте по шагам.
Текущий разряд: - Проходы: 0 / 0 Шаг: 0 / 0 Сложность по времени: -

Как работает поразрядная сортировка

Идея алгоритма. В отличие от большинства сортировок, поразрядная (Radix Sort) вообще не сравнивает числа друг с другом. В этой анимации наглядно представлена схема LSD (Least Significant Digit - сортировка по разрядам, начиная с младшего): числа распределяются по корзинам в зависимости от их цифр, начиная с единиц и продвигаясь к старшим разрядам.

Сложность алгоритма

Сложность - это оценка того, как быстро растет потребление ресурса при росте длины массива n. Ресурса у алгоритма два, поэтому и оценки две: по времени и по памяти. Обе записывают через O-нотацию - у нас есть отдельная анимация о том, как читать такие записи.

По времени

Показывает, как растет число операций (здесь это раздача по корзинам и сборка) при росте n. Пусть d - количество разрядов в максимальном числе, а k - система счисления (для десятичной системы k = 10). Если разрядность чисел d мала и фиксирована, сложность фактически становится линейной O(n), благодаря чему Radix Sort обгоняет алгоритмы сравнения вроде Quick Sort O(n log n) на больших массивах. Лейбл "Сложность" под визуализацией - время, которое получилось фактически на ваших данных.

Случай Время Комментарий
Все случаи (лучший, средний, худший) O(d × (n + k)) Количество операций зависит от разрядов d и числа корзин k = 10. При фиксированном d алгоритм работает за линейное время O(n) независимо от исходного порядка элементов

По памяти

Показывает, сколько дополнительной памяти нужно алгоритму. Сам входной массив в эту оценку не входит: дополнительной считается память сверх него.

Характеристика Оценка Комментарий
Дополнительная память O(n + k) Необходима память под 10 корзин (для k=10) и размещение в них элементов массива

Устойчивость алгоритма

Устойчивой называется сортировка, которая не меняет взаимный порядок равных элементов. Пример: сортируем учеников по оценке, а внутри одной оценки они уже стояли по алфавиту. Устойчивая сортировка сохранит алфавитный порядок внутри каждой оценки, неустойчивая - может перемешать.

Характеристика Оценка Комментарий
Устойчивость Да Это обязательное условие алгоритма. Если бы сортировка по старшему разряду переставляла элементы с одинаковыми цифрами, работа предыдущих проходов (по младшим разрядам) была бы испорчена.

Примеры реализации поразрядной сортировки (Radix Sort)

Хотите разобрать тему глубже? В нашем бесплатном курсе есть урок про поразрядную сортировку - с подробной теорией, задачами и проверочными вопросами.