Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: binary search, algorithm, sorted array, time complexity, divide and conquer

В чем суть бинарного поиска?

Вопрос проверяет понимание алгоритма бинарного поиска, его принципа работы и эффективности, что необходимо для решения задач на поиск в отсортированных данных.

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

Бинарный поиск — это алгоритм поиска элемента в отсортированном массиве. Он работает по принципу "разделяй и властвуй": сравнивает искомый элемент со средним элементом массива. Если искомый элемент меньше среднего, поиск продолжается в левой половине, если больше — в правой. Процесс повторяется, пока элемент не будет найден или интервал не станет пустым. Его главное преимущество — логарифмическая сложность O(log n).

Длинный ответ

Бинарный поиск — это фундаментальный алгоритм, используемый для быстрого нахождения позиции целевого элемента в отсортированном массиве. Его основная идея заключается в последовательном делении интервала поиска пополам, что позволяет отбрасывать половину оставшихся элементов на каждом шаге.

Как работает алгоритм

Алгоритм начинается с определения границ всего массива — левой (low) и правой (high). На каждом шаге вычисляется средний индекс (mid). Если элемент по этому индексу равен целевому, поиск завершается. Если целевой элемент меньше среднего, правая граница смещается на mid - 1, и поиск продолжается в левой половине. Если больше — левая граница становится mid + 1, и поиск идёт в правой половине. Процесс повторяется, пока границы не пересекутся.

Пример кода на Python

def binary_search(arr, target):
    low = 0
    high = len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid          # Элемент найден
        elif arr[mid] < target:
            low = mid + 1       # Ищем в правой половине
        else:
            high = mid - 1      # Ищем в левой половине
    return -1                   # Элемент не найден

# Пример использования
sorted_list = [1, 3, 5, 7, 9, 11]
print(binary_search(sorted_list, 7))  # Вывод: 3
print(binary_search(sorted_list, 4))  # Вывод: -1

Где и когда применяется

Бинарный поиск применяется везде, где данные отсортированы и требуется эффективный поиск:

  • Поиск в массивах и списках в программировании.
  • Реализация структур данных, таких как деревья поиска (например, в сбалансированных BST).
  • В системных библиотеках (например, функция bsearch в C).
  • В алгоритмах для нахождения корней уравнений или в задачах оптимизации (бинарный поиск по ответу).

Ключевое ограничение — массив должен быть отсортирован. Если данные часто меняются, поддержание сортировки может добавить накладные расходы.

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Python

    Python

  • Math

    Math

Ключевые слова

#binary search

#algorithm

#sorted array

#time complexity

#divide and conquer

Подпишись на Java Developer в телеграм