UC00607 · Programação estruturada · complexidade superior
Pesquisa linear vs binária
Linear (O(n)): percorre tudo.
def linear(lst, alvo):
for i, v in enumerate(lst):
if v == alvo:
return i
return -1
Binária (O(log n)): requer lista ordenada.
def binaria(lst, alvo):
lo, hi = 0, len(lst) - 1
while lo <= hi:
mid = (lo + hi) // 2
if lst[mid] == alvo: return mid
elif lst[mid] < alvo: lo = mid + 1
else: hi = mid - 1
return -1