Sobes.tech
Junior — Middle

Mekkora az időbeli komplexitású az elem hozzáadása a tömb végéhez szelet segítségével?

sobes.tech MI

Válasz az MI-től

Go-ban az elem hozzáadása a slice végéhez (append) amortizált időkomplexitással O(1).

Magyarázat:

  • Ha a slice rendelkezik elegendő kapacitással (capacity), az elem hozzáadása egyszerűen a következő szabad indexre írással történik — ez egy konstans időtartamú művelet.

  • Ha a kapacitás nem elegendő, akkor egy nagyobb méretű új tömböt allokálunk, a régi elemeket átmásoljuk, és az új elemet hozzáadjuk — ez a művelet O(n) időt vesz igénybe, ahol n a slice aktuális mérete.

Azonban, mivel ilyen újraelosztások nem minden hozzáadáskor történnek, hanem csak időszakosan, az átlagos (amortizált) hozzáadási komplexitás továbbra is O(1).