Binarno iskanje najde tarčo v sortirani matriki z večkratnim razpolovitvijo območja iskanja. Vsaka primerjava izloči polovico preostalih elementov, kar daje O(log n) čas.
Ideja
Pogledam srednji element. Če je enak tarči, je narejeno. Če je tarča manjša, iščem levo polovico; če je večja, iščem desno polovico. Ponavljam, dokler ne najdem ali je območje prazno.
Primer
():
lo, hi = , (arr) -
lo <= hi:
mid = (lo + hi) //
arr[mid] == target:
mid
arr[mid] < target:
lo = mid +
:
hi = mid -
-
binary_search([, , , , ], )
