Sobes.tech
Junior — Middle

Hogyan határozható meg a különböző műveletek időbeli összetettsége a standard kollekciók elemeivel?

sobes.tech MI

Válasz az MI-től

A C# standard kollekciókkal végzett műveletek időbeli összetettsége az adott adatszerkezet típusától függ. Íme néhány fő példa a gyakran használt kollekciókra:

  • List<T>

    • Index szerinti elérés: O(1)
    • Hozzáadás a végéhez: amortizált O(1)
    • Beszúrás vagy törlés középen: O(n)
    • Keresés (Contains): O(n)
  • Dictionary<TKey, TValue>

    • Hozzáadás, törlés, keresés kulcs szerint: átlagosan O(1), legrosszabb esetben O(n) (ütközések esetén)
  • HashSet<T>

    • Hozzáadás, törlés, létezés ellenőrzése: átlagosan O(1)
  • LinkedList<T>

    • Hozzáadás vagy törlés, ha van referencia rá: O(1)
    • Elem keresése: O(n)
  • Queue<T> és Stack<T>

    • Elemek hozzáadása és eltávolítása: O(1)

Az időbeli összetettség értékeléséhez fontos megérteni a kollekció belső megvalósítását és az adott műveletet. Például a listák indexekkel végzett műveletei gyorsak, míg az érték szerinti keresés lineáris. A hash-táblán alapuló szótárak és halmazok általában gyorsak, de kollíziók esetén lassulhatnak.