C# ban van ilyen adatszerkezet?
Gondolom az inkább O(1). :)
Hát a HashSet, HashTable és Dictionary például ilyen. Mondjuk az egy más kérdés, hogy ezekben mi az hogy "eleje" meg "közepe". :D
Úgy szeretném használni mint a generikus listát.
Működjön foreach-el és idexelést használhassam rajta csak ennyi funkció kell bele azzal kombinálva,hogy az elemek hozzáadása,törlése függetlenül attól,hogy honnan törlök vagy adok hozzá az minden esetben O(1) legyen.
A Dictionary-ben/HashTable-ben:
- O(1) a törlés
- foreach-el végigmászhatsz a kulcsokon
- a kulcsoknak megadhatsz egész számot is
Persze nyilván ha kitörölsz egyet, nem fogja átszámozni a kulcsokat.
Ez nem jó így? :)
Gondolom nem. :)
Szerintem az, hogy törléskor frissülő numerikus indexek legyenek ÉS O(1)-es legyen a törlés, az... minimum problémás, ha nem lehetetlen. Az index-érték párok hozzárendelések, és több indexet frissíteni / elemeket átpakolni az indexek alatt nyilván nem O(1) műveletigény. Ha meg pointeres megvalósítású, akkor az O(1)-es törlésért cserébe az elem elérése nem lesz O(1), hiszen meg kell keresni.
Ha létezhet ilyen adatszerkezet, akkor biztosan megírták már a profik bulletproof módon. (Tehát ezzel keresni nem fogsz.)
Szerintem.
Leteszteltem a dict és a list et 20 millió ulong object.
Annyi volt csak,hogy listnél és dict nél is töröltem a nulladik elemet.
A procim 1mag 1.8ghz,1gb ram.
list: 13,7 sec
dict: 7,5 sec
Úgyhogy a dict sem O(1);
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!