Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

วิธีการฝากข้อมูลในโครงสร้างข้อมูล


Bucketing builds ตารางแฮชเป็นอาร์เรย์ 2D แทนที่จะเป็นอาร์เรย์มิติเดียว ทุกรายการในอาร์เรย์มีขนาดใหญ่พอที่จะเก็บรายการ M ได้ (M ไม่ใช่ปริมาณข้อมูล แต่เป็นค่าคงที่)

ปัญหา

  • สร้างพื้นที่ที่สูญเปล่าจำนวนมาก
  • หากเกิน M จะต้องดำเนินการตามกลยุทธ์อื่น
  • ประสิทธิภาพไม่ดีนักสำหรับการใช้งานตามหน่วยความจำ แต่ทำได้หากบัคเก็ตเป็นแบบดิสก์

สำหรับการฝากข้อมูลก็มี λ>1 ได้ อย่างไรก็ตาม ยิ่ง λ มากเท่าใด โอกาสเกิดการชนก็จะยิ่งสูงขึ้น λ>1 รับประกันว่าจะมีการชนกันอย่างน้อย 1 ครั้ง (หลักการรูนกพิราบ) ซึ่งจะช่วยเพิ่มทั้งเวลาทำงานและโอกาสที่ถังจะหมด

สำหรับตารางแฮชของตำแหน่ง M และที่เก็บข้อมูล Y ในแต่ละตำแหน่ง

  • ค้นหาสำเร็จ - O(Y) กรณีที่เลวร้ายที่สุด
  • ค้นหาไม่สำเร็จ - กรณีที่เลวร้ายที่สุด O(Y)
  • การแทรก - O(Y) - สมมติว่าประสบความสำเร็จ การฝากข้อมูลไม่มีวิธีที่ดีในการจัดการกับการแทรกที่ไม่สำเร็จ
  • การลบ - O(Y)
  • ที่เก็บข้อมูล:O(M * Y)