TölvurForritun

Tvöfaldur leit - einn af the auðveldlega leiðir til að finna stak í fylki

Oft, forritari, jafnvel byrjendur, frammi fyrir þeirri staðreynd að það er sett af tölum, sem verður að finna ákveðna tölu. Það er þetta safn er kallað fylki. Og til að finna atriði í henni, það eru mýgrútur vegu. En einfaldasta þeirra geta talist tvöfaldur leit til hægri. Hvað er þessi aðferð er? Og hvernig á að framkvæma tvöfaldur leit? Pascal er auðveldasta umhverfi fyrir stofnun slíkrar áætlunar, þannig að við notum það til að læra.

Fyrst, greina, hvað eru kostir þessarar aðferðar, er það svo að við getum skilið, hvað er málið í rannsókn á efni. Svo skulum við hafa fjölbreytta með vídd amk 100000000 þætti, sem þarf að finna einhverja. Auðvitað, þetta vandamál er auðvelt að leysa með einfaldri línuleg leit, þar sem við erum að nota hringrás mun bera þarf þáttur með öllum þeim sem eru í fylkinu. Vandamálið er að framkvæmd þessa hugmynd mun taka of langan tíma. Á einfaldan Pascal forrit í nokkra meðferðir og þrjár línur af helstu texta, þú munt ekki taka eftir því, en þegar við komum að meira eða minna stór verkefni með miklum fjölda af greinum og góða virkni, the program vilja vera tilbúin til að vera hlaðinn of lengi. Sérstaklega ef tölvan er veikur árangur. Því, það er tvöfaldur leit, sem dregur úr leitarsvæðið tíma að minnsta kosti tvisvar.

Svo, hvað er að vinna meginreglunni um þessa aðferð? Strax það ætti að segja að tvöfaldur leit virkar ekki í hvaða fylki, en aðeins á raðaða setja af tölum. Í hverju skrefi tekin miðja þáttur af the array (þýðir þann fjölda af frumefni). Ef þörf fjöldi er meiri en að meðaltali, þá allt sem er eftir, sem er minna en meðaltal flokk, má farga og ekki að leita þar. Hins vegar ef minna en meðaltal - Meðal þessara talna til hægri, þú getur ekki leitað. Þá velja nýtt leitarsvæðið efst, þar sem fyrsti þáttur verður um miðja þáttur í öllu fylkinu, og síðast og síðasta vilja. Meðalfjöldi nýju sviði verður ¼ af öllum hluti, það er, (síðasta frumefni + miðjum þáttur í öllu fylkinu) / 2. Again, the sami aðgerð er framkvæmd - samanburð við aðgengi meðalfjölda af the array. Ef markgildið er minna en meðaltal höfnum við hægri hlið, og einnig til að gera næst, þar til nú á þessu miðja þáttur myndi ekki óskað.

Auðvitað, það er best að líta á dæmi um hvernig á að skrifa tvöfaldur leit. Pascal hér mun henta neinum - útgáfa er ekki mikilvæg. Við skulum skrifa einföld forrit.

Það er fylki af 1 til h undir nafninu "Massiv", breytu sem gefur til kynna neðri mörk leit, sem kallast "niz", efri mörk, sem kallast "verh", að meðaltali leitarorð - "sredn"; og þarf fjöldi - "Kr."

Svo fyrst við tengja efri og neðri mörk á svið leit:

niz: = 1;
verh: = H + 1;

Þá skipuleggja hringrás "þar til botninn er minna en efri mörk":

Þó niz byrja

Í hverju skrefi, skipta við hluti 2:

sredn: = (niz + verh) div 2; {Nota aðgerðina DIV, vegna þess að skipta án eftir er}

Í hvert skipti sem við endurskoðun. Vegna þess að hluturinn hefur þegar fundist ef miðillinn er óskað, trufla hringrás:

іf sredn = kr þá brjóta;

Ef um miðja þáttur í fylkinu meira en óskað, fleygja vinstri hlið, það er, efri mörk að meðaltali skipa þáttur:

ef Massiv [sredn]> ISK þá er verh: = sredn;

Og ef á móti, gerir það neðri mörk:

annars niz: = sredn;
enda;

Það er allt sem verður á dagskrá.

Leyfðu okkur að íhuga hvernig það mun líta út tvöfaldur aðferð í reynd. Hugleiddu þetta array 1, 3, 5, 7, 10, 12, 18 og það mun leita númer 12.

Alls við höfum 7 þætti, svo mun fjórða miðlungs, gildi 7.

1 3 5 7 10 12 18

Þar sem meira en 12, 7, 1.3 og 5 þætti, getum við henda. Þá höfum við fengið fjölda 4, 2/4 engin leifar 2. Svo er nýr þáttur verður að meðaltali um 10.

7 10 12 18

Þar sem 12 er meiri en 10, fleygja við 7. er enn aðeins 10, 12 og 18.

Hér miðju þáttur er nú þegar 12, það er nauðsynlegt númer. Þetta verkefni er lokið - númer 12 sem finnast.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 is.atomiyme.com. Theme powered by WordPress.