Lineaariset ja binaariset hakualgoritmit selitetty

Lineaariset ja binaariset hakualgoritmit selitetty

Kyky etsiä joitain tietoja on tärkeä osa tietotekniikkaa. Hakualgoritmeja käytetään tietyn kohteen etsimiseen tietojoukosta.





Algoritmit palauttavat loogisen tuloksen (tosi tai epätosi) hakukyselyyn. Niitä voidaan myös muokata antamaan löydetyn arvon suhteellinen sijainti.





Tässä artikkelissa algoritmit keskittyvät määrittämään, onko arvo olemassa.





Lineaariset hakualgoritmit

Lineaarinen haku tunnetaan myös nimellä peräkkäinen haku. Tämän tyyppisessä haussa luettelon jokaisessa arvossa käydään yksitellen järjestyksessä samalla kun tarkistetaan, onko haluttu arvo olemassa.

Algoritmi tarkistaa arvon arvon mukaan, kunnes löytää etsimäsi arvon tai loppuu haettavat arvot. Kun haettavat arvot loppuvat, hakukyselyäsi ei ole luettelossa.



Peräkkäinen hakualgoritmi ottaa parametreiksi arvoluettelon ja halutun kohteen luettelossa. Palautustulos alustetaan muodossa Väärä ja muuttuu Totta kun haluttu arvo löytyy.

Katso esimerkki alla olevasta Python -toteutuksesta:





def linearSearch(mylist, item):
found = False
index = 0
while index if mylist[index] == item:
found = True
else:
index = index+1
return found

Algoritmin analyysi

Paras tapaus ilmenee, kun haluttu kohde on luettelon ensimmäinen. Pahin tapaus ilmenee, kun haluttu kohde on luettelon viimeinen (n. Kohta). Siksi lineaarisen haun aika monimutkaisuus on O (n).

Keskimääräinen tapausskenaario yllä olevassa algoritmissa on n/2.





Aiheeseen liittyviä: Mikä on Big-O-merkintä?

On tärkeää tietää, että käytetty algoritmi olettaa, että sille annetaan satunnainen luettelo kohteista. Eli luettelokohteet eivät ole erityisessä järjestyksessä.

kuinka lisätä RAM -muistia kannettavassa tietokoneessa

Oletetaan, että tuotteet olivat tietyssä järjestyksessä, esimerkiksi pienimmästä suurimpaan. Laskennassa olisi mahdollista saavuttaa jonkin verran etua.

Ota esimerkki siitä, että etsit 19 luettelosta: [2, 5, 6, 11, 15, 18, 23, 27, 34]. Kun saavutat 23, kävisi ilmi, että etsittävää kohdetta ei ole luettelossa. Siksi ei enää olisi tärkeää jatkaa muiden luettelokohteiden etsimistä.

Binaariset hakualgoritmit

Olet nähnyt, kuinka järjestetty luettelo voi vähentää tarvittavaa laskentaa. Binaarinen hakualgoritmi hyödyntää tätä tehokkuutta vielä enemmän, kun järjestetty luettelo tuo mukanaan.

Algoritmi alkaa ottamalla tilatun luettelon keskiarvo ja tarkistamalla, onko se haluttu arvo. Jos ei, arvo tarkistetaan, onko se pienempi tai suurempi kuin haluttu arvo.

Jos se on vähemmän, sinun ei tarvitse tarkistaa luettelon alaosaa. Muussa tapauksessa, jos se on suurempi, se siirtyy luettelon yläosaan.

Aiheeseen liittyviä: Mikä on rekursio ja miten käytät sitä?

Riippumatta siitä, kumpi alaluettelo (vasen tai oikea) valitaan, keskiarvo määritetään uudelleen. Arvo tarkistetaan uudelleen, jos se on vaadittu arvo. Jos ei, tarkistetaan, onko se pienempi vai suurempi kuin pyydetty arvo.

online -moninpeli -RPG -pelejä ei ladata

Tämä prosessi toistetaan, kunnes arvo löytyy, jos se on olemassa.

Alla oleva Python -toteutus on tarkoitettu binäärihakualgoritmille.

def binarySearch (mylist, item):

low = 0
high = len(mylist) - 1
found = False
while low <= high and not found: mid = (low + high) // 2
if mylist[mid] == item:found = True
elif item else:low = mid + 1
return found

Algoritmin analyysi

Paras tapaus ilmenee, kun haluttu kohde todetaan keskimmäiseksi. Pahin skenaario ei kuitenkaan ole niin suoraviivainen. Seuraa alla olevaa analyysiä:

Ensimmäisen vertailun jälkeen n/2 kohdetta jää jäljelle. Toisen jälkeen n/4 kohdetta jää jäljelle. Kolmannen jälkeen n/8.

Huomaa, että kohteiden määrä puolittuu, kunnes ne saavuttavat n/2i, missä i on vertailujen määrä. Kaiken jakamisen jälkeen päädymme vain yhteen tuotteeseen.

Tämä merkitsee seuraavaa:

n/2i = 1 Siksi binäärihaku on O (log n).

Siirtyminen lajitteluun

Binäärihaussa tarkastelimme tapausta, jossa annettu ryhmä oli jo tilattu. Mutta oletetaan, että sinulla oli järjestämätön tietojoukko ja halusit tehdä siitä binaarisen haun. Mitä sinä tekisit?

Vastaus on yksinkertainen: lajittele se. Tietojenkäsittelytieteessä on useita lajittelutekniikoita, jotka on tutkittu hyvin. Yksi näistä tekniikoista, joita voit aloittaa opiskelun, on valinnan lajittelualgoritmi, kun meillä on paljon oppaita, jotka liittyvät myös muihin alueisiin.

Jaa Jaa Tweet Sähköposti Valintalajittelun käyttäminen

Valinnan lajittelu on hieman hankala ymmärtää aloittelijoille, mutta se ei ole liian haastavaa, kun saat asiat vauhtiin.

Lue seuraava
Liittyvät aiheet
  • Ohjelmointi
  • Tekniikka selitetty
  • Ohjelmointi
  • Algoritmit
  • Tietojen analysointi
Kirjailijasta Jerome Davidson(22 artikkelia julkaistu)

Jerome on MakeUseOfin henkilöstökirjoittaja. Hän käsittelee ohjelmointia ja Linuxia käsitteleviä artikkeleita. Hän on myös krypto -harrastaja ja seuraa aina salausteollisuutta.

Lisää Jerome Davidsonilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi