Закрепление материала: Сортировки

Модуль "Сортировки" • урок 16 из 17 •

Суть урока. Мы прошли весь модуль "Сортировки" - от простейших алгоритмов (Вставкой, Выборкой, Пузырьковая) до продвинутых (Хоара, Слиянием, Пирамидальная) и не-сравнительных (Подсчетом, Поразрядная, Карманная). Пора проверить, насколько хорошо вы усвоили материал.

Краткое резюме модуля

В этом модуле мы последовательно разобрали три группы алгоритмов сортировки:

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

Алгоритм выбора сортировки
Алгоритм выбора сортировки в зависимости от ограничений задачи.

Ключевые идеи

Коротко: главное

  • Для малых массивов - Сортировка вставкой.
  • Для общих задач - Сортировка Хоара (скорость) или Сортировка слиянием / Timsort (гарантия + устойчивость).
  • Для O(N log N) без доп. памяти - Пирамидальная сортировка.
  • Для целых чисел - Сортировка подсчетом (малый диапазон) или Поразрядная сортировка (большой).
  • Для дробных чисел в известном диапазоне - Карманная сортировка.
  • Нижняя граница O(N log N) обойти нельзя - если алгоритм основан на сравнениях.

Проверьте себя

Вопрос 1

Что означает "устойчивость" алгоритма сортировки?

Вопрос 2

Какой из этих алгоритмов может деградировать до O(N²) в худшем случае?

Вопрос 3

Дан массив из 10 000 оценок студентов (целые числа от 1 до 5). Какой алгоритм сортировки будет наиболее эффективным?

Как вам урок? Спасибо за отзыв!