Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

Поиск в списке: линейный и бинарный

Найти элемент в списке можно по-разному. Разберём два базовых способа и поймём, почему один бывает намного быстрее.

Линейный поиск

Самый простой способ: идём по списку с начала и проверяем каждый элемент, пока не найдём нужный. Работает всегда, но на большом списке медленный — в худшем случае просмотрим все элементы.

nums = [4, 8, 15, 16]
print(15 in nums)   # Python сам делает линейный поиск -> True

Бинарный поиск

Если список уже отсортирован, можно искать умнее: смотрим в середину, и если искомое меньше — отбрасываем правую половину, если больше — левую. Каждый шаг вдвое сокращает область поиска, поэтому даже в огромном списке хватает нескольких шагов.

Когда какой

Список маленький или не отсортирован — линейный поиск проще и достаточно. Список большой и отсортирован — бинарный поиск в разы быстрее. Понимание этой разницы — первый шаг к теме сложности алгоритмов.

Частые вопросы

Почему бинарный требует сортировки? Он опирается на порядок, чтобы отбрасывать половину; без сортировки это не работает.

Что использовать новичку? Для простых задач — оператор in (линейный поиск); бинарный — когда важна скорость на больших данных.

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание