Sobes.tech
Junior — Middle

Milline on dünaamilise massiivi elementide sisestamise operatsiooni ajakulud alguses või keskel?

sobes.tech AI

Vastus AI-lt

Dünaamilise massiivi alguses või keskel elemendi sisestamise ajakompleksus on tavaliselt O(n), kus n on massiivi elementide arv.

See on tingitud sellest, et pärast sisestamist tuleb kõik järgnevad elemendid ühe positsiooni paremale nihutada, et teha ruumi uuele elemendile. Halvimal juhul, sisestades alguses, nihutatakse kõik elemendid.

Näide Go keeles:

package main

import "fmt"

func insertAt(slice []int, index int, value int) []int {
    slice = append(slice, 0)           // suurendame lõiku
    copy(slice[index+1:], slice[index:]) // nihutame elemendid
    slice[index] = value               // sisestame väärtuse
    return slice
}

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