Kompiuteriai, Programavimas
Dvejetainiai paieška - vienas iš paprasčiausių būdų, kaip rasti masyve elementą
Gana dažnai, programuotojai, net pradedantiesiems, susiduria su tuo, kad yra skaičių rinkinys, kuris turi rasti tam tikrą skaičių. Būtent ši kolekcija yra vadinamas masyvo. Ir rasti elementus jį, yra daug būdų, kaip daugybė. Bet pats paprasčiausias iš jų gali būti laikomas dvejetainis paieškos dešinėje. Kas yra šis metodas yra? Ir kaip įgyvendinti dvejetainis paiešką? Pascal yra lengviausias aplinka už tokią programą organizacijoje, todėl mes naudosime ją studijuoti.
Pirma, analizuoti, kas yra šio metodo privalumai, tai yra, kad mes galėtume suprasti,
Taigi, kas yra darbo principas šiuo metodu? Iškart reikia pasakyti, kad dvejetainis paieškos veikia jokiu masyvo, bet tik ant rūšiavimo skaičių rinkinio. Kiekvienu žingsnis viduriniosios elemento masyvo (tai reiškia, elemento numerį). Jei reikia , skaičius yra didesnis nei vidutiniškai, tada viskas, kas liko, tai yra mažiau nei vidutinis ląstelių, gali būti atmesta, o ne ten atrodo. Ir atvirkščiai, jei mažiau nei vidutiniškai - tarp tų skaičių į dešinę, jūs negalite paiešką. Tada pasirinkite naują paieškos zoną, kur pirmasis elementas bus vidutinio elementas visą masyvą, o paskutinis ir paskutinis noras. Vidutinis skaičius naują srityje bus ¼ visų segmento, tai yra, (paskutinio elemento + vidurinės elemento visą masyvas) / 2. Vėlgi, pati operacija atliekama - palyginti su vidutiniu skaičiumi masyvo. Jei tikslinė vertė yra mažesnė nei vidurkis, mes atmetame dešinėje pusėje, o taip pat daryti toliau, iki šiol tai vidutinio elementas nebūtų pageidaujama.
Žinoma, tai geriausia pažvelgti, kaip rašyti dvejetainis paiešką pavyzdyje. Pascal čia tiks visiems - versija nėra svarbi. Leiskite parašyti paprastą programą.
Tai iš 1 masyvas h pagal pavadinimą "MASSIV", kintamasis, nurodantis apatinę ribą paieškos, vadinama "niz", viršutinė riba, vadinama "Verh", vidutinė paieškos terminas - "sredn"; ir reikiamą skaičių - "ISK".
Taigi, pirmiausia mes priskirti viršutinę ir apatinę ribą nuotolio paieškos:
niz: = 1;
Verh: = h + 1;
Tada organizuoja ciklą "iki apačios yra mažesnis nei viršutinės ribos":
Nors niz
Kiekviename žingsnyje, mes padalinti segmentą 2:
sredn: = (niz + Verh) div 2; {Naudoti funkcijos div, nes atskirties be likusiam}
Kiekvienas peržiūros metu. Kadangi daiktas jau rasti, jei vidutinės norima, nutraukti ciklą:
jei sredn = izikos tada pertrauka;
Jei vidutinio elementas masyve daugiau nei reikia, išmesti iš kairės pusės, tai yra, viršutinė riba vidutiniškai skiria elementas:
jei MASSIV [sredn]> izikos tada Verh: = sredn;
O jei priešingai, tai daro apatinės ribos:
kitur niz: = sredn;
galų;
Tai viskas, kad bus programoje.
Panagrinėkime, kaip jis atrodys dvejetainis metodą praktikoje. Apsvarstykite šį masyvas: 1, 3, 5, 7, 10, 12, 18 ir ji sieks skaičių 12.
Iš viso turime 7 elementus, todėl bus ketvirtas vidutinio, vertė 7.
1 | 3 | 5 | 7 | 10 | 12 | 18 |
Nes daugiau nei 12, 7, 1.3 ir 5 elementų, galime išmesti. Tada mes turime numeris 4, 4/2 jokių likučių yra 2. Taigi, naujas elementas bus 10 vidurkis.
7 | 10 | 12 | 18 |
Čia, viduryje elementas yra jau 12, tai yra reikiamas skaičius. Ši užduotis yra baigtas - skaičių 12 rasta.
Similar articles
Trending Now