Sobes.tech
Junior — Middle

Kokia yra dinaminio masyvo pradžioje arba viduryje elementų įterpimo operacijos laiko sudėtingumas?

sobes.tech AI

Atsakymas iš AI

Dinaminio masyvo pradžioje arba viduryje įterpiamo elemento laiko sudėtingumas paprastai yra O(n), kur n yra elementų skaičius masyve.

Tai susiję su tuo, kad po įterpimo visi vėlesni elementai turi būti perkelti viena pozicija į dešinę, kad būtų vietos naujam elementui. Blogiausiu atveju, įterpiant į pradžią, perkelti reikia visus elementus.

Pavyzdys Go kalba:

package main

import "fmt"

func insertAt(slice []int, index int, value int) []int {
    slice = append(slice, 0)           // padidiname skaidinį
    copy(slice[index+1:], slice[index:]) // perkelti elementus
    slice[index] = value               // įterpti reikšmę
    return slice
}

func main() {
    s := []int{1, 2, 3, 4}
    s = insertAt(s, 1, 99) // įterpti 99 pozicijoje 1
    fmt.Println(s)        // [1 99 2 3 4]
}