Junior — Middle
Qual è il livello di complessità temporale dell'operazione di aggiunta di un elemento alla fine di un array usando uno slice?
sobes.tech AI
Risposta dell'AI
In Go, l'operazione di aggiunta di un elemento alla fine di uno slice (append) ha una complessità temporale ammortizzata di O(1).
Spiegazione:
-
Se lo slice ha una capacità (
capacity) sufficiente, l'aggiunta di un elemento avviene semplicemente scrivendo nell'indice libero successivo — questa è un'operazione in tempo costante. -
Se la capacità non è sufficiente, viene allocato un nuovo array di dimensione maggiore, vengono copiati gli elementi vecchi e viene aggiunto il nuovo — questa operazione richiede O(n), dove n è la dimensione attuale dello slice.
Tuttavia, poiché tali ridistribuzioni non avvengono ad ogni aggiunta, ma solo periodicamente, la complessità media (ammortizzata) dell'aggiunta rimane O(1).