Sobes.tech
Назад к вопросам
Junior — Middle
83

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

Ответ от нейросети

sobes.tech 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]
}