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

Сортировка Тимсорт: интерактивная анимация (Timsort)

Адаптивный гибрид сортировки вставками и слиянием

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

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

Как работает сортировка Тимсорт (Timsort)

Идея алгоритма. На практике данные часто бывают частично отсортированными. Timsort использует это: он находит уже упорядоченные отрезки массива, при необходимости досортировывает их короткими вставками, а затем объединяет их как в сортировке слиянием.

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

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

По времени

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

Случай Время Комментарий
Лучший (массив отсортирован) O(n) Алгоритм находит один гигантский прогон и завершает работу без сортировки
Средний O(n log n) Абсолютное большинство слияний требует логарифмического числа уровней
Худший O(n log n) Сложность как у сортировки слиянием в худшем случае

По памяти

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

Характеристика Оценка Комментарий
Дополнительная память O(n) Как и для сортировки слиянием, нужна дополнительная память для объединения отрезков массива

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

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

Характеристика Оценка Комментарий
Устойчивость Да Слияние (Merge) и сортировка вставками (Insertion Sort), из которых состоит Timsort, изначально устойчивы.

Примеры реализации Timsort (упрощенная модель)

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