Algoritam binarnog pretraživanja je učinkovitiji način traženja određenog elementa na sortiranom popisu. Za razliku od linearnog pretraživanja, koje provjerava elemente sekvencijalno, binarno pretraživanje dijeli popis na pola i uspoređuje ciljni element sa srednjim elementom. Ovaj se postupak ponavlja sve dok se ciljni element ne pronađe ili dok raspon pretraživanja ne postane prazan.
Kako radi
- Počnite s cijelim sortiranim popisom.
- Pronađite srednji element trenutnog raspona pretraživanja.
- Usporedite srednji element s ciljnom vrijednošću.
- Ako je srednji element jednak ciljnoj vrijednosti, pretraga je uspješna.
- Ako je srednji element veći od cilja, tražite u lijevoj polovici raspona.
- Ako je srednji element manji od cilja, tražite u desnoj polovici raspona.
- Ponavljajte korake 2-6 dok se ciljni element ne pronađe ili dok raspon pretraživanja ne postane prazan.
Primjer
Razmotrimo sortirani popis cijelih brojeva i želimo pronaći broj 34 pomoću binarnog pretraživanja.
Poredani popis: {12, 23, 34, 45, 56, 67, 89, 90}
- Počnite s cijelim popisom.
- Srednji element: 56(pozicija 4). Usporedi s 34.
- 56 je veće od 34. Traži u lijevoj polovici.
- Novi srednji element: 23(pozicija 1). Usporedi s 34.
- 23 je manje od 34. Traži u desnoj polovici.
- Novi srednji element: 45(pozicija 3). Usporedi s 34.
- 45 je veće od 34. Traži u lijevoj polovici.
- Novi srednji element: 34(pozicija 2). Meta pronađena.
Primjer koda u C++
U navedenom primjeru, binarySearch
funkcija se koristi za pronalaženje broja 34 u sortiranom popisu cijelih brojeva. Rezultat će biti pozicija 34 na popisu(pozicije počinju od 0) ili -1 ako broj nije pronađen.