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

Сортировка подсчетом: интерактивная анимация (Counting Sort)

Считаем вхождения каждого значения и собираем результат

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

Данные: Случайные
Данные:
Входной массив (высота столбика = значение)
Счетчики: сколько раз встретилось каждое значение 0..9
Результат
Легенда цветов
ждет обработки активный элемент уже посчитан записан в результат
Нажмите "Пуск" или листайте по шагам.
Фаза: - Операции: 0 Шаг: 0 / 0 Сложность: -

Как работает сортировка подсчетом

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

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

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

По времени

Показывает, как растет число операций (здесь это чтения и записи, сравнений нет вовсе) при росте n. Лейбл "Сложность" под визуализацией - время, которое получилось фактически на ваших данных.

Характеристика Оценка Комментарий
Время (все случаи) O(n + k) n - длина массива, k - размер диапазона значений. Растет линейно: порядок данных не важен

По памяти

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

Характеристика Оценка Комментарий
Дополнительная память O(k) k счетчиков. Часто еще аллоцируют массив результата на n элементов, тогда O(n + k). Плата за скорость: пузырек обходится O(1) памяти, но тратит квадратичное время, а подсчет наоборот - покупает линейное время дополнительной памятью.

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

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

Характеристика Оценка Комментарий
Устойчивость Да В классической версии с префиксными суммами: равные элементы переносятся в исходном порядке, поэтому подсчет лежит в основе поразрядной сортировки (Radix sort). Наша упрощенная версия раскладывает голые числа по счетчикам - для чисел без "нагрузки" разницы нет.

Примеры реализации сортировки подсчетом (Counting Sort)

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