Sobes.tech
Junior — Middle

Dinamik massivdə elementləri əvvəlinə və ya ortasına əlavə etmə əməliyyatının vaxt mürəkkəbliyi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Dinamik bir massivdə elementin başlanğıca və ya ortasına əlavə əməliyyatının vaxt mürəkkəbliyi adətən O(n) təşkil edir, burada n massivdəki elementlərin sayıdır.

Bu, əlavə etdikdən sonra bütün sonrakı elementlərin sağa doğru hərəkət etdirilməsini tələb etdiyi üçün baş verir, yeni element üçün yer açmaq üçün. Ən pis halda, başlanğıca əlavə etdikdə, bütün elementlər hərəkət etdirilir.

Go dilində nümunə:

package main

import "fmt"

func insertAt(slice []int, index int, value int) []int {
    slice = append(slice, 0)           // dilimi genişləndiririk
    copy(slice[index+1:], slice[index:]) // elementləri hərəkət etdiririk
    slice[index] = value               // dəyəri əlavə edirik
    return slice
}

func main() {
    s := []int{1, 2, 3, 4}
    s = insertAt(s, 1, 99) // 99-u 1-ci mövqeyə əlavə et
    fmt.Println(s)        // [1 99 2 3 4]
}