Sobes.tech
Junior — Middle

Qual è la complessità temporale dell'operazione di inserimento di elementi all'inizio o nel mezzo di un array dinamico?

sobes.tech AI

Risposta dell'AI

La complessità temporale dell'operazione di inserimento di un elemento all'inizio o a metà di un array dinamico è generalmente O(n), dove n è il numero di elementi nell'array.

Ciò è dovuto al fatto che, dopo l'inserimento, tutti gli elementi successivi devono essere spostati di una posizione verso destra per fare spazio al nuovo elemento. Nel peggiore dei casi, inserendo all'inizio, tutti gli elementi vengono spostati.

Esempio in Go:

package main

import "fmt"

func insertAt(slice []int, index int, value int) []int {
    slice = append(slice, 0)           // aumentiamo la capacità del slice
    copy(slice[index+1:], slice[index:]) // spostiamo gli elementi
    slice[index] = value               // inseriamo il valore
    return slice
}

func main() {
    s := []int{1, 2, 3, 4}
    s = insertAt(s, 1, 99) // inserimento di 99 alla posizione 1
    fmt.Println(s)        // [1 99 2 3 4]
}