V razvoju programske opreme se nizi uporabljajo povsod. "Inteligentni" tipi podatkov v sodobnih programskih jezikih, kot so dinamični nizi, nudijo velike možnosti za priročno delo s predmeti. Ampak algoritmi, ki so podlaga za delo s temi vrstami podatkov, ki so bili razviti ob zori računalništva - sredi dvajsetega stoletja. Prvi algoritem za binarno iskanje je bil objavljen leta 1946. Razmislite o najbolj priljubljenih algoritmih za ravnanje z nizi.
Zaporedno iskanje
Indeksno zaporedno iskanje
Binarno iskanje
Prelivanje izbranega podatkovnega tipa
sredina polja = leva vrednost + (leva vrednost - vrednost desno) /2
Med delovanjem dodajanja obstaja nevarnost prelivanja podatkovnega tipa. Če je polje tako veliko, morate uporabiti različne tehnike, da se izognete tveganju. Spodaj so standardne napake pri načrtovanju binarnih iskanj.
Napake vrednosti
Ali napake na enoto. Zelo pomembno je upoštevati naslednje možnosti:
- Prazno polje.
- Ni vrednosti.
- Prekoračitev polja.
Več kopij
Opozoriti je treba, daV primeru obstoja več enakih primerkov ključa v matriki mora program najti določen (prvi, zadnji, naslednji).
& lt; script type = "text /javascript" & gt;
lahko blockSettings2 = {blockId: "R-A-271049-5", renderTo: "yandex_rtb_R-A-70350-39", async:! 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings2.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ta, ta.dokument," yandexContextAsyncCallbacks ");
Oglejmo si implementacijo tega algoritma v programskem jeziku C plus plus. Upoštevajte, da binarno iskanje deluje samo z razvrščenim nizom! Če matrika ni predhodno razvrščena, bo rezultat izračuna napačen.
V nadaljevanju je koda na C ++. Sprva se niz začetnih spremenljivk za celo število, velikost deset, inicializira. Nato operater cin v zanki čaka na vnos desetih vrednosti od uporabnika (vrstica deset).
V dvajseti vrstici program od uporabnika pričakuje, da vnese vrednost ključa.
Vrstice 29 - 35 predstavljajo uveljavljeni algoritem binarnega iskanja. Med izvajanjem programa v srednji spremenljivki se vrednost povprečnega elementa zapiše na naslednji način:
Sredina polja (sredina) = (leva vrednost (l) + desna vrednost (r)) /2
Vrstica
arr [sredina] == tipka
Preveri se, ali je srednja vrednost ključna vrednost. Če je ena, se vrednost zastave zastave spremeni v TRUE, kar pomeni, da je problem rešen. Če je srednja vrednost večja od vrednosti našega ključa, se desna stran (spremenljivka r) dodeli sredi. ČeNasprotno, sredina je postavljena v r. Slednji preverja zastavo boolean zastave.