Почему в функции quicksort условие len(arr) <= 1?

Массив длиной 0 или 1 уже отсортирован, поэтому это базовый случай рекурсии. Проверка <= 1 останавливает и пустые подмассивы, которые возникают при разбиении вокруг pivot.

Короткий ответ

Что ответить на собеседовании

Массив длиной 0 или 1 уже отсортирован, поэтому это базовый случай рекурсии. Проверка <= 1 останавливает и пустые подмассивы, которые возникают при разбиении вокруг pivot.

Подробный разбор

Ответ с пояснениями

Массив длиной 0 или 1 уже отсортирован, поэтому это базовый случай рекурсии. Проверка <= 1 останавливает и пустые подмассивы, которые возникают при разбиении вокруг pivot.

Если проверять только len(arr) == 1, пустой массив может попасть в код выбора опорного элемента и вызвать ошибку либо некорректную рекурсию. Базовый случай также гарантирует, что дальнейшее разбиение не нужно. Для корректной quicksort важно, чтобы рекурсивные подзадачи уменьшались, включая набор одинаковых элементов. Одной проверки длины недостаточно, если pivot случайно остаётся в неизменившейся рекурсивной части.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее