Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Tietorakenteet

Jokotai [01.01.2013 14:26:53]

#

Pino vs. keko vs. lista vs. vektorit vs. ...

Olen aina vain käyttänyt taulua, mutta algoritmeihin tutustuessani olen kohdannut pinoja ja muita tietorakenteita. Milloin tulisi käyttää mitäkin? Onko taulu joskus huomattavasti huonompi ratkaisu, kuin vaikka pino?

Grez [01.01.2013 14:45:44]

#

Siis mitä ylipäätään tarkoitat käyttäneesi kun puhut taulusta? Assosiaatiotaulua, hajautustaulua, taulukkoa, tietokantataulua, vai jotain muuta?

Jokotai [01.01.2013 15:10:13]

#

- taulukkoa

Esimerkki:

int a[5] = {0, 1, 2, 3};
int *b = new int[10];

Metabolix [01.01.2013 16:10:04]

#

Sekoitat nyt eri tasoille kuuluvia käsitteitä. Algoritmien teoriassa puhutaan usein abstrakteista tietorakenteista (lista, pino, jono, prioriteettijono). Samalle rakenteelle voi olla monta erilaista toteutusta; esimerkiksi pinon voi toteuttaa taulukon tai listan avulla. Konkreettiset toteutukset taas perustuvat johonkin matalan tason rakenteisiin eli viime kädessä taulukoihin ja osoittimiin.

Olennaista on ymmärtää, mitä eri rakenteilla voi tehdä: miten tietoa lisätään, mitä tietoa voi hakea, mitkä operaatiot ovat nopeita ja mitkä hitaita.

Jokotai [01.01.2013 16:44:50]

#

Kiitän. Tutustuin abstraktin tietotyypin käsitteeseen ja asia selkeni.

Antti Laaksonen [01.01.2013 20:13:24]

#

Tietorakennetta kannattaa käyttää, jos siitä on hyötyä algoritmissa eli jos algoritmissa usein tarvittavat tietorakenteen operaatiot ovat tehokkaita.

Jotkin algoritmikirjojen tietorakenteista ovat käytännössä melko hyödyttömiä. Esimerkiksi linkitetty lista esitellään usein pitkällisesti, mutta käytännössä muuttuvan kokoinen taulukko (esim. C++:n vector) korvaa sen lähes täydellisesti.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta