Sobes.tech
Junior — Middle

Каква е времевата сложност на операцията по вмъкване на елементи в началото или в средата на динамичен масив?

sobes.tech AI

Отговор от AI

Времевата сложност на операцията за вмъкване на елемент в началото или в средата на динамичен масив обикновено е O(n), където n е броят на елементите в масива.

Това се дължи на факта, че след вмъкването всички следващи елементи трябва да бъдат преместени с една позиция надясно, за да се освободи място за новия елемент. В най-лошия случай, при вмъкване в началото, се преместят всички елементи.

Пример на Go:

package main

import "fmt"

func insertAt(slice []int, index int, value int) []int {
    slice = append(slice, 0)           // увеличаваме среза
    copy(slice[index+1:], slice[index:]) // преместваме елементите
    slice[index] = value               // вмъкваме стойността
    return slice
}

func main() {
    s := []int{1, 2, 3, 4}
    s = insertAt(s, 1, 99) // вмъкване на 99 на позиция 1
    fmt.Println(s)        // [1 99 2 3 4]
}