Бінарний пошук
Реалізуйте функцію, яка виконує бінарний пошук у відсортованому масиві цілих чисел. Функція повинна отримати на вхід відсортований список та цільове число, і повернути індекс знайденого елемента або -1, якщо елемент не знайдено.
Сигнатура функції має бути такою:
def binary_search(arr: list[int], target: int) -> int:
Бінарний пошук працює за таким принципом:
- Обирається середній елемент масиву.
- Якщо середній елемент дорівнює шуканому числу, повертаємо його індекс.
- Якщо шукане число менше за середній елемент, повторюємо пошук у лівій половині масиву.
- Якщо шукане число більше, повторюємо пошук у правій половині масиву.
- Процес повторюється, поки не буде знайдено число або поки масив не стане порожнім.
Алгоритм повинен працювати за логарифмічний час O(log n).
Приклад
>>> binary_search([1, 3, 5, 7, 9, 11, 13], 7)
3
>>> binary_search([1, 3, 5, 7, 9, 11, 13], 4)
-1
>>> binary_search([2, 4, 6, 8, 10], 10)
4
>>> binary_search([], 5)
-1
Підказки щодо реалізації
- Використовуйте два індекси (left, right), щоб визначати межі поточного підмасиву.
- Використовуйте цикл або рекурсію для пошуку середнього елемента.
- Якщо left > right, то елемент не знайдено.
- Пам’ятайте про цілочисельне ділення при знаходженні середнього індексу.