Sobes.tech
Junior — Middle

Care este complexitatea temporală a operației de inserare a elementelor la începutul sau în mijlocul unui array dinamic?

sobes.tech AI

Răspuns de la AI

Complexitatea temporară a operației de inserare a unui element la începutul sau în mijlocul unui array dinamic este de obicei O(n), unde n reprezintă numărul de elemente din array.

Aceasta se datorează faptului că, după inserare, toate elementele următoare trebuie mutate cu o poziție spre dreapta pentru a face loc pentru noul element. În cel mai rău caz, la inserarea la început, toate elementele sunt mutate.

Exemplu în Go:

package main

import "fmt"

func insertAt(slice []int, index int, value int) []int {
    slice = append(slice, 0)           // mărim slice-ul
    copy(slice[index+1:], slice[index:]) // mutăm elementele
    slice[index] = value               // inserăm valoarea
    return slice
}

func main() {
    s := []int{1, 2, 3, 4}
    s = insertAt(s, 1, 99) // inserare 99 la poziția 1
    fmt.Println(s)        // [1 99 2 3 4]
}