Tietorakenteita suunniteltaessa on tärkeää ymmärtää käyttö- ja muutostoimintaan liittyvät kustannukset. Array- ja luettelot ovat yhteisiä rakenteita, joilla on erilliset suorituskykyominaisuudet, jotka vaikuttavat niiden soveltuvuuteen eri sovelluksiin.

Kaapelit: Pääsy ja muuttaminen

Arrays tarjoaa jatkuvan ajan pääsyn elementteihin indeksoinnin avulla, jolloin hakutoiminnot ovat erittäin tehokkaita. Elementin muuttaminen tietyssä indeksissä tapahtuu myös vakio-aikana. Kuitenkin, lisääminen tai poistaminen, erityisesti keskellä matriisia, voi olla kallista, koska se vaatii myöhempien osien siirtämistä.

Luettelot: Käyttö ja muuttaminen

Listat, kuten linkitetyt luettelot, edellyttävät tyypillisesti kulkusuuntaa päästä elementtejä, mikä johtaa lineaarisen ajan monimutkaisuus. Pääseminen elementti tietyssä asennossa voi edellyttää iterointia solmujen. Muutokset kuten lisääminen tai poistaminen voivat olla tehokkaita, jos sijainti on tiedossa, usein tapahtuu jatkuvassa ajassa, kun solmu on jo sijoitettu.

Suunnittelunäkökohdat

Valitsemalla matriisit ja luettelot riippuu sovelluksen käyttö- ja muutoskuvioista. Array-mallit sopivat, kun nopeaa käyttöä tarvitaan, ja muutoksia on harvoin. Listat ovat suositeltavia, kun vaaditaan usein lisääntyviä ja poistoja, erityisesti datarakenteen keskellä.

  • Kaaremien tarjous O(1)[]
  • Kaaremissa on kalliita sisäänpannuja/poisteita keskellä
  • Luetteloissa on O(n) käyttöaika
  • Luettelot mahdollistavat tehokkaat syötteet/poistukset, kun solmukohdat tunnetaan