Sobes.tech
Junior — Middle

Jaká je časová složitost operace vložení prvků na začátek nebo do středu dynamického pole?

sobes.tech AI

Odpověď od AI

Časová složitost operace vložení prvku na začátek nebo do středu dynamického pole je obvykle O(n), kde n je počet prvků v poli.

To je způsobeno tím, že po vložení je třeba posunout všechny následující prvky o jednu pozici doprava, aby se uvolnilo místo pro nový prvek. V nejhorším případě, při vkládání na začátek, jsou všechny prvky posunuty.

Příklad v Go:

package main

import "fmt"

func insertAt(slice []int, index int, value int) []int {
    slice = append(slice, 0)           // zvětšíme řez
    copy(slice[index+1:], slice[index:]) // posuneme prvky
    slice[index] = value               // vložíme hodnotu
    return slice
}

func main() {
    s := []int{1, 2, 3, 4}
    s = insertAt(s, 1, 99) // vložení 99 na pozici 1
    fmt.Println(s)        // [1 99 2 3 4]
}