Harvinainen joukko

Harva taulukko  on abstrakti esitys tavallisesta taulukosta , jossa dataa ei esitetä jatkuvasti, vaan fragmentoituna; useimmat sen elementit saavat saman arvon (oletusarvo, yleensä 0 tai nolla). Lisäksi suuren määrän nollia tallentaminen taulukkoon on tehotonta sekä taulukon tallentamisen että käsittelyn kannalta.

Harva taulukko voi käyttää määrittelemättömiä elementtejä. Tässä tapauksessa taulukko palauttaa jonkin oletusarvon.

Tämän taulukon yksinkertaisin toteutus varaa tilaa koko taulukolle, mutta kun muita kuin oletusarvoja on vähän, tämä toteutus on tehoton. Toimintoja tavallisten taulukoiden kanssa työskentelyyn ei sovelleta tähän taulukkoon tapauksissa, joissa harvous tiedetään etukäteen (esimerkiksi tallennettaessa tietoja lohkoihin).

Esitysmenetelmät

Assosiatiivisena taulukkona

Harva taulukko esitetään yleensä assosiatiivisena taulukkona :

Sparse_Array[{pos1 -> val1, pos2 -> val2,…}]tai Sparse_Array[{pos1, pos2,…} -> {val1, val2,…}],

jossa jokainen asema pos i vastaa arvoa val i . Tätä menetelmää käytetään muistin säästämiseen (sekä avain että arvo kuljettavat tietoja).

Linkitettynä luettelona

Tässä käytetään linkitettyä listaa tavallisen taulukon sijaan, koska ensinnäkin tavallinen taulukko vaatii tilaa määrittelemättömien arvojen tallentamiseen. Esimerkiksi kun ilmoitat:

double arr[1000][1000];

Muistia varataan kerralla 8 Mt (8 tavua arvoa kohden × 1 000 000 arvoa), mikä on järjetöntä muistin tuhlausta. Linkitetyn listan tapauksessa tyhjiä arvoja ei tallenneta, ja tilaa uusille arvoille varataan automaattisesti, kun elementtejä lisätään tai poistetaan (tässä tapauksessa voidaan puhua dynaamisesta muistin allokoinnista ).

Katso myös

Linkit