Junior — Middle
Mekkora az időbeli komplexitása az elemek beszúrásának a dinamikus tömb elejére vagy közepére?
sobes.tech MI
Válasz az MI-től
A dinamikus tömb elejére vagy közepére történő elem beszúrásának időkomplexitása általában O(n), ahol n a tömbben lévő elemek száma.
Ez azért van, mert a beszúrás után minden következő elemet egy pozícióval jobbra kell mozgatni, hogy helyet csináljunk az új elemnek. A legrosszabb esetben, amikor a kezdőbe szúrunk be, minden elem elmozdul.
Példa Go nyelven:
package main
import "fmt"
func insertAt(slice []int, index int, value int) []int {
slice = append(slice, 0) // növeljük a szelet
copy(slice[index+1:], slice[index:]) // elemek mozgatása
slice[index] = value // érték beszúrása
return slice
}
func main() {
s := []int{1, 2, 3, 4}
s = insertAt(s, 1, 99) // 99 beszúrása a 1. pozícióba
fmt.Println(s) // [1 99 2 3 4]
}