Junior — Middle
Hoe bepaal je de tijd die nodig is om een element aan het einde van een slice toe te voegen in een programmeertaal?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go is een slice een structuur die een pointer naar een array, een lengte en een capaciteit bevat.
Het toevoegen van een element aan het einde van een slice gebeurt meestal via de append-operatie:
slice = append(slice, newElement)
De tijd voor het toevoegen hangt af of de huidige capaciteit van de slice voldoende is voor het nieuwe element:
- Als de capaciteit voldoende is, schrijft append gewoon het element in de volgende vrije plek — operatie O(1).
- Als de capaciteit niet voldoende is, wordt een nieuwe array met een grotere capaciteit toegewezen, worden de oude elementen gekopieerd en wordt het nieuwe element toegevoegd — operatie O(n), waarbij n de huidige lengte van de slice is.
Dus, de geamortiseerde tijd voor het toevoegen aan het einde van de slice is O(1), hoewel sommige operaties duurder kunnen zijn door geheugenherverdeling.