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

Сортировка циклами: интерактивная анимация (Cycle Sort)

Каждый элемент записывается ровно один раз на свое место - минимум записей среди всех сортировок

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

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

Как работает сортировка циклами

Идея алгоритма. Для каждого элемента подсчитываем, сколько значений в массиве меньше него - это и есть его целевая позиция. Ставим элемент на место, вытесняя тот, кто там стоял, и повторяем, пока цикл не замкнется. Каждый элемент записывается ровно один раз.

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

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

По времени

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

Случай Время Комментарий
Все случаи O(n²) Квадратичное число сравнений, но записей не более n - оптимально

По памяти

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

Характеристика Оценка Комментарий
Дополнительная память O(1) Сортировка на месте: хватает одной временной переменной для обмена, сколько бы элементов ни было

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

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

Характеристика Оценка Комментарий
Устойчивость Нет При отправке элемента на его целевую позицию он может перепрыгнуть через равные ему элементы. Алгоритм неустойчив.

Примеры реализации циклической сортировки (Cycle Sort)

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