/ / Binaarihaku on yksi helpoimmista tavoista löytää elementti taulukosta

Binaarinen haku on yksi helpoimmista tavoista löytää elementti taulukosta.

Melko usein ohjelmoijat, jopa aloittelijat,edessä tosiasia, että on olemassa joukko numeroita, joista sinun täytyy löytää tietty numero. Tätä kokoelmaa kutsutaan matriisiksi. Ja löytääksesi halutun elementin siitä, on olemassa monia erilaisia ​​tapoja. Mutta yksinkertaisinta niistä voidaan perustellusti pitää binaarisena hauna. Mikä on annettu menetelmä? Ja kuinka toteuttaa binaarihaku? Pascal on helpoin ympäristö tällaisen ohjelman järjestämiseen, joten käytämme sitä opiskeluun.

Ensinnäkin tarkastellaan tämän menetelmän etuja, koska voimme ymmärtää

binaarinen haku
какой смысл в изучении данной темы.Oletetaan siis, että on taulukko, jonka mitat ovat vähintään 100 000 000 elementtiä ja joista sinun täytyy löytää tietty. Tietysti tämä ongelma voidaan helposti ratkaista yksinkertaisella lineaarisella haulla, jossa silmukan avulla verrataan haluttua elementtiä kaikkiin taulukon elementteihin. Ongelmana on, että tämän idean toteuttaminen vie liian paljon aikaa. Yksinkertaisessa Pascal-ohjelmassa, joka sisältää useita menettelytapoja ja jolla on kolme päätekstiriviä, et huomaa tätä, mutta kun aloitat enemmän tai vähemmän suuria projekteja, joissa on paljon sivukonttoreita ja hyvä toimivuus, valmisohjelman lataus vie liian kauan. Varsinkin jos tietokoneen suorituskyky on heikko. Siksi on olemassa binaarihaku, joka lyhentää hakuaikaa ainakin puoleen.

Joten mikä on tämän periaatemenetelmä? On syytä todeta heti, että binaarihaku ei toimi millään taulukolla, vaan vain lajitelluilla numeroilla. Jokaisessa seuraavassa vaiheessa otetaan taulukon keskielementti (tarkoitetaan elementin numerolla). Jos haluttu luku on keskiarvoa suurempi, niin kaikki vasemmalla oleva eli pienempi kuin keskimmäinen elementti voidaan hylätä eikä etsiä sieltä. Toisaalta, jos keskimääräistä vähemmän - oikealla olevista numeroista ei voi tehdä hakuja. Seuraavaksi valitsemme uuden hakualueen, jossa ensimmäinen elementti on koko taulukon keskielementti ja viimeinen pysyy viimeisenä. Uuden alueen keskimääräinen lukumäärä on ¼ koko segmentistä, eli (viimeinen elementti + koko taulukon keskielementti) / 2. Jälleen sama toimenpide suoritetaan - vertailu taulukon keskimääräiseen lukumäärään. Jos haluttu arvo on pienempi kuin keskimääräinen, hylkäämme oikean puolen ja teemme samalla edelleen, kunnes tämä keskielementti löytyy.

binaarinen haku pascal

Tietysti on parasta tarkastella esimerkkiä siitä, kuinka binaarinen haku kirjoitetaan. Pascal sopii kaikille täällä - versio ei ole tärkeä. Kirjoitetaan yksinkertainen ohjelma.

Sillä on taulukko 1 - h, jota kutsutaan"massiv", muuttuja, joka merkitsee haun alarajaa nimeltään "niz", ylärajaa kutsutaan "verh", haun keskiosa on "sredn"; ja etsimäsi numero isk.

Joten ensin määritämme hakuvälin ylä- ja alarajat:

pohja: = 1;
verh: = h + 1;

Sitten järjestämme jakson "kun alempi on alle ylärajan":

Vaikka niz alkaa

Jaa kussakin vaiheessa segmentti 2: lla:

sredn: = (niz + verh) div 2; {käytämme div-funktiota, koska jaamme ilman jäännöstä}

Joka kerta kun tarkistamme. Jos keskiarvo on haluttu, keskeytämme jakson, koska haluttu elementti on jo löytynyt:

jos sredn = isk, murta sitten;

Jos ryhmän keskielementti on haluttua suurempi, hylkäämme vasemman sivun, ts. Keskimmäisen elementin osoitamme ylärajaan:

jos array yusrednshch> oikeusjuttu alkuun: = keskimääräinen;

Ja jos päinvastoin, niin teemme siitä alarajan:

muu pohja: = keskimääräinen;
end;

Se on kaikki mitä ohjelmassa on.

Katsotaan kuinka binaarimenetelmä näyttää käytännössä. Otetaanpa tällainen taulukko: 1, 3, 5, 7, 10, 12, 18 ja etsimme siihen numeroa 12.

Meillä on yhteensä 7 elementtiä, joten neljäs on keskiarvo, sen arvo on 7.

1357101218

Koska 12 on suurempi kuin 7, voimme hylätä elementit 1,3 ja 5. Sitten meillä on 4 numeroa jäljellä, 4/2 ilman jäännöstä on 2. Joten uusi keskielementti on 10.

7101218

binaarinen haku pascal
Koska 12 on suurempi kuin 10, hävitämme 7. Vain 10, 12 ja 18 jäävät jäljelle.

Keskimmäinen elementti on täällä jo 12, tämä on haluttu numero. Tehtävä valmis - numero 12 löytyi.

piti:
0
Suosituimmat viestit
Henkinen kehitys
ruoka
y