Junior — Middle
Koja je vremenska složenost operacije umetanja elemenata na početak ili u sredinu dinamičkog niza?
sobes.tech АИ
Одговор од АИ
Vremenska složenost operacije umetanja elementa na početak ili u sredinu dinamičkog niza obično je O(n), gde je n broj elemenata u nizu.
To je zato što nakon umetanja, svi sledeći elementi moraju biti pomereni za jednu poziciju udesno da bi se napravilo mesto za novi element. U najgorem slučaju, pri umetanju na početak, pomeraju se svi elementi.
Primer u Go:
package main
import "fmt"
func insertAt(slice []int, index int, value int) []int {
slice = append(slice, 0) // povećavamo rez
copy(slice[index+1:], slice[index:]) // pomeramo elemente
slice[index] = value // umetnemo vrednost
return slice
}
func main() {
s := []int{1, 2, 3, 4}
s = insertAt(s, 1, 99) // umetanje 99 na poziciju 1
fmt.Println(s) // [1 99 2 3 4]
}