Kezdőoldal » Számítástechnika » Programozás » C# ban van ilyen adatszerkezet?

C# ban van ilyen adatszerkezet?

Figyelt kérdés
Olyan kéne amiből törölni tudnék elemeket úgy,hogy az minden esetben n(1) legyen.Akkor is ha az elejéről vagy a közepéről törlök.Van ilyen?
2014. júl. 25. 16:06
1 2
 1/11 anonim ***** válasza:
Az n(1) legyen egy kicsit failosan hangzik. Mit is szeretnél?
2014. júl. 25. 16:27
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:

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

2014. júl. 25. 16:33
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:
Ha O(1)-es törlésről van szó egy sorszámozott tárolóban, az nem fog menni. HashMap lehet jó, de nem biztos. Bejelölheted töröltnek az elemet esetleg egy tömbben. Vagy ha már ott vagy a bejárásnál a láncolt listából törölhetsz. Hogyan szeretnéd használni?
2014. júl. 25. 18:20
Hasznos számodra ez a válasz?
 4/11 A kérdező kommentje:

Ú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.

2014. júl. 25. 19:34
 5/11 A kérdező kommentje:
Talán írnom kéne egy saját típust mutatókkal és ezt használná adattárolásra a saját listám.De nehéz meló volna ez.
2014. júl. 25. 19:38
 6/11 anonim ***** válasza:
Én javas vagyok, abban is eléggé kezdő, de szerintem az, hogy valamire valami igaz-e, az egy if állítás. Ha keresed, akkor meg max. az összes arraytagon végigfuttatod whilelal. Javítsatok ki, mert most tényleg sötétben tapogatózom.
2014. júl. 25. 21:11
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:
Előző nem az jelenti a problémát számomra hanem az O(1) elérése törlés és behelyezésekkor.De van egy jó elképzelésem már,hogy hogyan fogom megvalósítani.Ki fogom majd teljesen bővíteni és árulni fogom az osztályt,több verziót is csinálok majd bele.Egyébként nem ez miatt akartam ezt megvalósítani de ha már szívni fogok vele,akkor megpróbálok egy kis nyereséget is szerezni bele.
2014. júl. 25. 21:27
 8/11 anonim ***** válasza:

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.

2014. júl. 25. 22:31
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:
De lehetséges ha máshogy fog működni a kezelhetősége az adatszerkezetnek és máshogy a háttérben ahogy rendeződnek az elemek.Működhet.Mutatóaritmetikával fogom megoldani és lesz egy mátixom ami memóriacímeket fog tárolni a mátrix második indexe pedig azt az értéket fogja reprezentálni,hogy a következő elem ami nem törölt hány bitre van.Tömb összefűzésre is szükség lesz ezt is tudom mivel fogom megoldani.Van erre egy metódus a doksiba találtam.A null értékkel felvértezett tömb elemek pedig teljesen vissza lesznek adva a rendszernek.
2014. júl. 25. 22:50
 10/11 A kérdező kommentje:

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);

2014. júl. 25. 23:27
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!