บางครั้งเราสร้างอาร์เรย์โดยใช้การจัดสรรหน่วยความจำแบบไดนามิก หากอาร์เรย์ได้รับการจัดสรรโดยใช้เทคนิคการจัดสรรหน่วยความจำแบบไดนามิก เราสามารถเพิ่มขนาดของอาร์เรย์เป็นสองเท่าโดยดำเนินการบางอย่าง
สมมติว่าขนาดอาร์เรย์เริ่มต้นคือ 5
อาร์เรย์
0 | 1 | 2 | 3 | 4 |
องค์ประกอบ 1 | องค์ประกอบ 2 | องค์ประกอบ 3 | องค์ประกอบ 4 | องค์ประกอบ 5 |
หลังจากเพิ่มอาร์เรย์เป็นสองเท่า ขนาดจะเป็น −
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
องค์ประกอบ 1 | องค์ประกอบ 2 | องค์ประกอบ 3 | องค์ประกอบ 4 | องค์ประกอบ 5 | องค์ประกอบ 6 | องค์ประกอบ 7 | องค์ประกอบ 8 | องค์ประกอบ 9 | องค์ประกอบ 10 |
หากต้องการเพิ่มขนาดของอาร์เรย์ arr ขนาด n เป็นสองเท่า arr[0…n-1] ขั้นแรกเราต้องสร้างอาร์เรย์ขนาดใหม่ขึ้นมาหนึ่งชุด นั่นคือ ม. จากนั้นคัดลอกองค์ประกอบ n จาก arr ไปยังอาร์เรย์ใหม่ สุดท้ายเปลี่ยนค่าของ arr ให้ชี้ไปที่อาร์เรย์ใหม่
ในการสร้างอาร์เรย์ขนาด m จะใช้เวลา θ(m) เนื่องจากจะมีการเริ่มต้นด้วยค่าดีฟอลต์บางค่า จากนั้นจะต้องใช้เวลา θ(n) เพิ่มเติมในการคัดลอกจากอาร์เรย์เก่าไปยังอาร์เรย์ใหม่ ดังนั้นการดำเนินการจะใช้เวลา θ(m + n) การดำเนินการนี้จะเกิดขึ้นเมื่ออาร์เรย์เต็ม และโดยปกติค่า m จะเหมือนกับ 2n ความซับซ้อนคือ θ(2n + n) =θ(3n) เทียบเท่ากับ θ(n) แต่การดำเนินการนี้ถือว่ามีราคาแพง อย่างไรก็ตาม การดำเนินการนี้จะถูกตัดจำหน่ายในการทำซ้ำในลำดับถัดไป n ครั้ง จากนั้นจึงเพิ่มเวลา θ(1) ต่อการวนซ้ำเท่านั้น ดังนั้นเราจึงสามารถเข้าใจได้ว่าขนาดอาร์เรย์ที่เพิ่มขึ้นในปัจจัยคงที่ไม่ได้ส่งผลเสียต่อความซับซ้อนเชิงซีมโทติก