Junior — Middle
Чӣ гуна аст мураккабии вақти амали ворид кардани унсурҳо ба оғоз ё дар миёнаи массиви динамикӣ?
sobes.tech AI
Ҷавоб аз AI
เวลาความซับซ้อนของการดำเนินการแทรกองค์ประกอบในต้นหรือกลางของอาเรย์แบบไดนามิกมักจะเป็น O(n) โดยที่ n คือจำนวนขององค์ประกอบในอาเรย์
นี่เป็นเพราะว่าหลังจากการแทรกแล้ว องค์ประกอบที่ตามมาทั้งหมดจะต้องถูกเลื่อนหนึ่งตำแหน่งไปทางขวาเพื่อเปิดที่ว่างสำหรับองค์ประกอบใหม่ ในกรณีที่เลวร้ายที่สุด เมื่อแทรกในต้น จะมีการเลื่อนองค์ประกอบทั้งหมด
ตัวอย่างใน Go:
package main
import "fmt"
func insertAt(slice []int, index int, value int) []int {
slice = append(slice, 0) // ขยาย slice
copy(slice[index+1:], slice[index:]) // เลื่อนองค์ประกอบ
slice[index] = value // แทรค่าลงไป
return slice
}
func main() {
s := []int{1, 2, 3, 4}
s = insertAt(s, 1, 99) // แทรก 99 ที่ตำแหน่ง 1
fmt.Println(s) // [1 99 2 3 4]
}