Расскажи про алгоритм двоичного поиска

Python Junior Без компании
Расскажи про алгоритм двоичного поиска
Ответы
Двоичный поиск — это эффективный алгоритм поиска элемента в **отсортированном** массиве. Он работает за **O(log n)**, так как на каждом шаге делит диапазон поиска пополам. ### Алгоритм: - **Определяем границы** (начало и конец массива). - **Находим середину** текущего диапазона. - **Сравниваем** элемент в середине с искомым: - Если равен — возвращаем индекс. - Если меньше — смещаем левую границу. - Если больше — смещаем правую границу. - **Повторяем**, пока границы не сойдутся. ### Пример на Python: ``` def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: left = mid + 1 else: right = mid - 1 return -1 # Элемент не найден ``` ### Особенности: - Работает **только с отсортированными данными**. - Эффективнее линейного поиска (**O(n)** vs **O(log n)**). - Подходит для больших массивов. - Может быть реализован **рекурсивно** (но итеративный вариант предпочтительнее из-за отсутствия накладных расходов на вызовы).