awesome-everything EN
↑ Обратно к восхождению

Алгоритмы с нуля

Сортировка и поиск: свободное припоминание

Суть Свободное припоминание по всему юниту сортировки и поиска. Сначала ответьте на каждый вопрос по памяти, затем откройте эталонный ответ и сравните.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 13 min

Припоминание сильнее перечитывания. Для каждого вопроса проговорите или запишите полный ответ по памяти, прежде чем открыть эталон — именно усилие припоминания закрепляет материал.

Цель

Восстановите ключевые идеи юнита — сортировка как препроцессинг, почему merge sort и quicksort ведут себя так по-разному, инвариант binary search и бинарный поиск по ответу — не подглядывая в уроки.

Вспомните перед уходом
  1. 01
    Почему сортировку называют препроцессингом и каково правило, стоит ли сортировать?
  2. 02
    Все простые сортировки O(n²), но insertion sort всё равно полезна. Почему и чем она отличается от selection sort на почти отсортированном входе?
  3. 03
    Почему merge sort O(n log n) на любом входе и чем вы за эту гарантию платите?
  4. 04
    Quicksort O(n log n) в среднем, но O(n²) в худшем случае. Объясните разрыв и как продакшен-код от него защищается.
  5. 05
    Сформулируйте инвариант binary search и три классических бага, его нарушающих.
  6. 06
    Что такое «бинарный поиск по ответу» и какое предусловие должно выполняться для его корректности?
Итог

Если вы смогли восстановить каждый ответ по памяти, вы держите стержень юнита: сортируйте только ради переиспользования порядка; insertion sort адаптируется, а selection sort — никогда; merge sort гарантирует O(n log n) и stable-свойство ценой O(n) памяти; quicksort меняет худший случай на in-place скорость и защищает его умным выбором pivot; а binary search — хоть по массиву, хоть по монотонному пространству ответов — живёт или умирает по своему включающему инварианту.

Продолжить восхождение ↑Сортировка и поиск: чтение кода
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.