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.