Junior
Как работи алгоритъмът за двоично търсене?
sobes.tech AI
Отговор от AI
Бинарното търсене работи, като анализира сортиран масив и последователно дели интервала за търсене на половини.
- Инициализация: Определя се лявата и дясната граница на интервала за търсене (обикновено началото и краят на масива).
- Сравнение: Изчислява се индексът на средата на интервала. Стойността на този индекс се сравнява с търсения елемент.
- Намаляване на интервала:
- Ако стойността в средата съвпада с търсения, елементът е намерен.
- Ако стойността в средата е по-голяма от търсения, търсенето продължава в лявата половина на интервала. Дясната граница се премества към средата - 1.
- Ако стойността в средата е по-малка от търсения, търсенето продължава в дясната половина на интервала. Лявата граница се премества към средата + 1.
- Повторение: Стъпки 2 и 3 се повтарят, докато елементът не бъде намерен или интервалът стане празен.
Сложността на алгоритъма е O(log n), което е много по-ефективно от линейното търсене за големи масиви.
Пример за имплементация на Python:
def binary_search(arr, target):
"""
Реализация на двоично търсене.
Взема сортиран масив и търсена стойност.
Връща индекса на елемента или -1, ако не е намерен.
"""
лява, дясна = 0, len(arr) - 1
while лява <= дясна:
среда = (лява + дясна) // 2 # Изчисляване на средния индекс
средна_стойност = arr[среда] # Получаване на стойността в средата
if средна_стойност == target:
return среда # Елементът е намерен
elif средна_стойност < target:
лява = среда + 1 # Търсеното е по-голямо, търсене вдясно
else: # средна_стойност > target
дясна = среда - 1 # Търсеното е по-малко, търсене вляво
return -1 # Елементът не е намерен