Algoritam binarnog pretraživanja učinkovita je metoda za pronalaženje određene vrijednosti u sortiranom nizu. Ovaj pristup dijeli niz na manje dijelove i kontinuirano uspoređuje vrijednost na srednjoj poziciji raspona pretraživanja s ciljnom vrijednošću. Ako se vrijednosti podudaraju, željena vrijednost je pronađena; u suprotnom, algoritam nastavlja sužavati raspon pretraživanja i ponavlja proces dok se ne pronađe vrijednost ili dok više ne ostane nijedan element za ispitivanje.
koraci:
- Inicijalizirajte raspon pretraživanja: Započnite odabirom raspona pretraživanja od prve
left
do zadnje pozicijeright
u nizu. - Pronađite srednju točku: Izračunajte srednju točku izračunavanjem prosjeka
left
položaja i desno; ovo je središnja točka raspona pretraživanja. - Usporedite vrijednosti: Usporedite vrijednost na srednjoj točki s ciljnom vrijednošću.
- Rezultat usporedbe ručke: Ako vrijednost na srednjoj točki odgovara ciljanoj vrijednosti, vratite ovu poziciju. Ako je vrijednost na srednjoj točki manja od ciljane vrijednosti, ažurirajte lijevu poziciju na sredinu + 1 za pretraživanje desne polovice. Ako je vrijednost u srednjoj točki veća od ciljane vrijednosti, ažurirajte desnu poziciju na sredinu- 1 za pretraživanje lijeve polovice.
- Ponavljanje: Ponavljajte korake od 2 do 4 dok se ne pronađe vrijednost ili dok nema više elemenata za provjeru
left > right
.
Prednosti i nedostatci
Prednosti:
- Učinkovita izvedba: vremenska složenost algoritma je O(log n), što ga čini vrlo učinkovitim za rukovanje velikim skupovima podataka.
- Učinkovito za velike skupove podataka: binarno pretraživanje učinkovito smanjuje broj elemenata za brzo ispitivanje za velike skupove podataka.
Nedostaci:
- Primjenjivo samo na sortirane nizove: Algoritam radi samo na sortiranim nizovima.
- Varijabilni broj koraka: Broj koraka potrebnih za pronalaženje vrijednosti ovisi o njenom položaju u nizu, a može biti potrebno mnogo koraka za vrijednosti blizu krajeva.
Primjer: Binarno pretraživanje za pronalaženje vrijednosti 12 u sortiranom nizu u PHP-u
Objašnjenje primjera
- Počinjemo s početnim rasponom pretraživanja od prve
left = 0
do zadnje pozicijeright = 6
niza. - Srednju točku(sredinu) izračunavamo usrednjavanjem lijevog i desnog položaja;
mid = 3
. Vrijednost na sredini je 12. - Uspoređujemo vrijednost na
mid(12
) s ciljnom vrijednošću(12) i nalazimo podudaranje, pa vraćamo poziciju 3. - Algoritam završava i ispisujemo rezultat "Vrijednost 12 pronađena na poziciji 3."