Sobes.tech
Junior — Middle

Hogyan határozható meg, mennyi időbe telik egy elem beszúrása egy szelet (slice) végére egy programozási nyelvben?

sobes.tech MI

Válasz az MI-től

Go nyelven a szelet (slice) egy olyan struktúra, amely egy mutatót tartalmaz egy tömbre, egy hosszúságot és egy kapacitást.

A szelet végére történő elem beszúrása általában az append művelettel történik:

slice = append(slice, newElement)

A beszúrás ideje attól függ, hogy a jelenlegi kapacitás elegendő-e az új elemhez:

  • Ha a kapacitás elegendő, az append egyszerűen az elemet írja a következő szabad helyre — O(1) művelet.
  • Ha nem elegendő, új tömböt foglalnak, megnövelt kapacitással, a régi elemek másolásával és az új hozzáadásával — O(n) művelet, ahol n a jelenlegi hosszúság.

Így az amortizált idő a szelet végére történő beszúrásra O(1), bár egyes műveletek drágábbak lehetnek a memória újraelosztása miatt.