Nopea haku taulukosta

koodaja

Taulukossa on vaikka merkkijonot:

"Matti", "Jussi","Pekka","Sami","Henri","Heli","Liisa"

Mikä on nopein tapa saada selville, onko taulukossa vaikka "Pekka" ?

Nopeus on erittäin tärkeätä!

Kaikki merkkijonon "nimet" on etukäteen tiedossa, ja myöhemmin suoritetaan vain nämä tarkistukset, onko merkkijono vai ei (true/false).

Vai olisiko esim switch case nopeampi ?

3

332

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Voit vaikka lajitella tiedot järjestykseen, ja lopettaa haun heti, kun mennään yli sen kohdan, mistä lähtien haettavaa elementtiä ei voi tulla enää vastaan lopputaulukossa.

      Kun dataa tulee huomattavasti enemmän, niin voisi esim. luoda taulukon kutakin aakkosta kohti. Tämän taulukon elementteihin tulee myös taulukko, jossa on ko. kirjaimella alkavat sanat. Haettaessa x-kirjaimella alkavaa sanaa riittää selata läpi vain se taulukon kohta (eli siis siitä indeksistä saatava lista), mihin on tallennettu x-kirjaimella alkavat sanat.

      Toisaalta ainakin noin pienillä datamäärillä taulukon läpikäymiseen käytettävä aika suhteessa muuhun on täysin merkityksetön (etenkin silloin, jos teet jotain interaktiivista ohjelmaa).

      Switch-case on tuskin nopeampi, sillä se vastannee listan läpikäymistä for- tai while-loopissa. Lisäksi sen ylläpitäminen käsin on tuskaa.

    • Liksa0

      1a) Jos merkkijono on tiedossa niin järjestä hakutaulukko etukäteen.

      1b) Aloita etsiminen keskimmäisestä indeksistä ja jos haettava asia on suurempi kuin keskimmäinen indeksi jää jäljelle taas puolet pienempi alue josta otat taas keskimmäisen indeksin... tätä jatketaan kunnes löytyy tai indeksi ei muutu (löydettiin lähin mahdollinen).

      2) Jos vaikka 90% hauista tehdään samalla sanalla niin käsittele ne erikseen cachella.

      3) Balancing Tree algoritmi on kaikkein tehokkain mutta se on monimutkainen ja soveltuu lähinnä laajoille datajoukoille.

      4) Datan profiloiminen nopeuttaa jonkin verran suuria ei-heterogeenisiä hakujoukkoja. (Eli siis etukäteen selvitetään missä suhteessa on vaikka A:lla alkavia nimiä muihin kirjaimiin verrattuna jotta haku osataan alkaa oikeasta kohtaa.)

      5) Usein kuitenkin käy niin että nopeuttamiseen tehty logiikka on lähes yhtä raskasta kuin perus puolittava haku.

    • tumpelo

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Saako kaunis ihminen parempaa kohtelua?

      Onko kauniin ihmisen elämä "helpompaa" kuin tavallisen näköisen ihmisen? Olen kuullut väittämän, että kaunis ihminen saa
      Sinkut
      105
      2983
    2. Ei ole kyllä mennyt

      Kovin hyvin kun alussa pieni sekoaminen hänestä 😏
      Ikävä
      10
      1864
    3. En rehellisesti usko et oisit

      Sekuntiakaan oikeasti mua kaivannut. Tai edes miettinyt miten mulla menee. Jotenkin todennäköisesti hyödyt tästäkin jos
      Ikävä
      37
      1855
    4. Suomennettua: professori Jeffrey Sachs avaa Ukrainan sodan taustat luennollaan EU parlamentissa

      Jeffrey Sachs on yhdysvaltalainen ekonomisti. Sachs toimii Columbian yliopiston The Earth Instituten johtajana. Aiemmin
      NATO
      390
      1706
    5. Näin sinusta taas unta!

      Unessa olin pakahtuneesti rakastunut sinuun. Olimme vanhassa talossa jossa oli yläkerran huoneissa pyöreät ikkunat. Pöly
      Ikävä
      21
      1621
    6. Nainen, olet jotenkin lumoava

      Katselen kauneuttasi kuin kuuta, sen loistoa pimeässä. Sen kaunis valo on kaunista sekä herkkää ja lumoavaa. Olet naisel
      Ikävä
      68
      1457
    7. Olet muutenkin tyhmä

      Ja käyttäydyt epäasiallisesti siinä työssäsi.
      Ikävä
      119
      1277
    8. Se sinun kaipauksen kohde

      Ei todellakaan käy täällä höppänä mies.
      Ikävä
      13
      1186
    9. En muuttaisi sinusta mitään

      Ensin olit etäinen ja yritin pysyä tutkan alapuolella. Mutta ei silmiltäsi jää mitään huomaamatta, kuten minulla ei kuul
      Ikävä
      9
      1156
    10. Et katso sitä

      Niinkuin minua. Ehkä se luo toivetta
      Ikävä
      20
      1039
    Aihe