Sobes.tech
Junior — Middle

Qual é a complexidade temporal da operação de inserir elementos no início ou no meio de um array dinâmico?

sobes.tech IA

Resposta da IA

A complexidade temporal da operação de inserção de um elemento no início ou no meio de um array dinâmico geralmente é O(n), onde n é o número de elementos no array.

Isto deve-se ao facto de, após a inserção, ser necessário deslocar todos os elementos seguintes uma posição para a direita para abrir espaço para o novo elemento. No pior caso, ao inserir no início, todos os elementos são deslocados.

Exemplo em Go:

package main

import "fmt"

func insertAt(slice []int, index int, value int) []int {
    slice = append(slice, 0)           // aumentamos o slice
    copy(slice[index+1:], slice[index:]) // deslocamos os elementos
    slice[index] = value               // inserimos o valor
    return slice
}

func main() {
    s := []int{1, 2, 3, 4}
    s = insertAt(s, 1, 99) // inserção de 99 na posição 1
    fmt.Println(s)        // [1 99 2 3 4]
}