Junior
Koji algoritam ima logaritamsku složenost O(log n)?
sobes.tech АИ
Одговор од АИ
Алгоритам бинарног (или дијотомског) претраживања има логаритамску временску сложеност O(log n).
Принцип рада бинарног претраживања:
- Захтева сортирани низ (или листу).
- У сваком кораку упоређује тражени елемент са елементом у средини тренутног опсега претраге.
- Ако се елементи поклапају, претрага се завршава.
- Ако је тражени елемент мањи од средишњег, наставља се у левој половини опсега.
- Ако је већи, наставља се у десној половини.
- Опсег претраге се у сваком кораку смањује за пола.
Пример имплементације у Python-у:
# Функција бинарног претраживања
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
mid_val = arr[mid]
if mid_val == target:
return mid # Пронађен елемент, враћа индекс
elif mid_val < target:
low = mid + 1 # Игнорише леву половину
else:
high = mid - 1 # Игнорише десну половину
return -1 # Елемент није пронађен
# Пример коришћења
# сортирана_листа = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91]
# циљ = 23
# резултат = binary_search(сортирана_листа, циљ)
# if резултат != -1:
# print(f"Пронађен елемент на индексу: {резултат}")
# else:
# print("Елемент није пронађен")
Логаритамска сложеност произилази из тога што број операција је пропорционалан логаритму укупног улаза (n), јер се у сваком кораку простор претраге дели на пола.