Junior
Kako funkcioniše algoritam binarnog pretraživanja?
sobes.tech АИ
Одговор од АИ
Бинарно претраживање ради анализирајући сортирани низ, делећи интервал претраге изнова на пола.
- Иницијализација: Одређује се леви и десни граница интервала претраге (обично почетак и крај низа).
- Поређење: Израчунава се индекс средине интервала. Вредност на том индексу се пореди са траженим елементом.
- Смањење интервала:
- Ако се вредност у средини поклапа са траженим, елемент је пронађен.
- Ако је вредност у средини већа од траженог, претрага се наставља у левој половини интервала. Десна граница се помера на средину - 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 # Елемент није пронађен