Algoritem binarnega iskanja je učinkovita metoda za iskanje določene vrednosti v razvrščeni matriki. Ta pristop razdeli matriko na manjše dele in nenehno primerja vrednost na srednjem položaju iskalnega obsega s ciljno vrednostjo. Če se vrednosti ujemajo, je želena vrednost najdena; v nasprotnem primeru algoritem nadaljuje z oženjem obsega iskanja in ponavlja postopek, dokler ni najdena vrednost ali ni več elementov za pregled.
Koraki:
- Inicializirajte obseg iskanja: Začnite z izbiro obsega iskanja od prvega
left
do zadnjega položajaright
matrike. - Poiščite srednjo točko: izračunajte srednjo točko tako, da izračunate povprečje
left
položajev in desno; to je srednja točka obsega iskanja. - Primerjaj vrednosti: primerjajte vrednost na srednji točki s ciljno vrednostjo.
- Rezultat primerjave ročaja: Če se vrednost na srednji točki ujema s ciljno vrednostjo, vrnite ta položaj. Če je vrednost na srednji točki manjša od ciljne vrednosti, posodobite levi položaj na sredino + 1, da poiščete desno polovico. Če je vrednost na srednji točki večja od ciljne vrednosti, posodobite desni položaj na sredino- 1 za iskanje po levi polovici.
- Ponavljanje: Ponavljajte korake od 2 do 4, dokler ni vrednost najdena ali ni več elementov za preverjanje
left > right
.
Prednosti in slabosti
Prednosti:
- Učinkovito delovanje: Časovna zapletenost algoritma je O(log n), zaradi česar je zelo učinkovit za obdelavo velikih naborov podatkov.
- Učinkovito za velike nabore podatkov: Binarno iskanje je učinkovito pri zmanjševanju števila elementov, ki jih je treba hitro pregledati za velike nabore podatkov.
Slabosti:
- Velja samo za razvrščene nize: Algoritem deluje samo na razvrščene nize.
- Spremenljivo število korakov: število korakov, potrebnih za iskanje vrednosti, je odvisno od njenega položaja v matriki in lahko traja veliko korakov za vrednosti blizu koncev.
Primer: binarno iskanje za iskanje vrednosti 12 v razvrščeni matriki v PHP
Razlaga primera
- Začnemo z začetnim iskalnim obsegom od prvega položaja
left = 0
do zadnjega položajaright = 6
matrike. - Srednjo točko(mid) izračunamo s povprečenjem leve in desne lege;
mid = 3
. Vrednost na sredini je 12. - Primerjamo vrednost pri
mid(12
) s ciljno vrednostjo(12) in najdemo ujemanje, tako da vrnemo položaj 3. - Algoritem se konča in izpišemo rezultat "Vrednost 12 najdena na položaju 3."