ฉันกำลังดูเว็บไซต์นี้ที่แสดงรายการความซับซ้อนของ Big O สำหรับการดำเนินการต่างๆ สำหรับ Dynamic Arrays ความซับซ้อนในการลบคือ O(n) ในขณะที่สำหรับ Hash Tables คือ O(1)
เพื่อให้ Dynamic Arrays เช่น ArrayLists เป็น O(n) นั่นต้องหมายถึงการดำเนินการลบค่าบางส่วนออกจากจุดศูนย์กลาง จากนั้นจึงเลื่อนแต่ละดัชนีไปที่หนึ่งเพื่อให้บล็อกของข้อมูลอยู่ติดกัน เพราะถ้าเราแค่ลบค่าที่เก็บไว้ที่ดัชนี k และไม่ขยับ มันจะเท่ากับ O(1)
แต่ใน Hash Tables ที่มีการตรวจสอบเชิงเส้น การลบก็เหมือนกัน คุณเพียงเรียกใช้ค่าของคุณผ่านฟังก์ชัน Hash ไปที่ Dynamic Array ที่เก็บข้อมูลของคุณไว้ และลบค่าที่เก็บไว้ในนั้น
เหตุใด Hash Tables จึงได้รับเครดิต O(1) ในขณะที่ Dynamic Arrays ได้รับ O(n)