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

Bucketing Methods (วิธีบัคเก็ตติ้ง) ในโครงสร้างข้อมูล

Bucketing คืออะไร?

Hash Table เป็น 2D Array แทน 1D Array แต่ละ Entry (Bucket) จุได้ M Items (M = Constant, ไใช่จำนวนข้อมูลทั้งหมด)

ปัญหาของ Bucketing

  • Wasted Space มาก (หลาย Bucket ไม่เต็ม)
  • ถ้าเกิน M → ต้องมี Strategy อื่น (Overflow Handling)
  • ไม่เหมาะ Memory-based แต่ทำได้ถ้า Disk-based Buckets

Load Factor λ = N / (M × Y) โดย N = Items, M = Locations, Y = Buckets/Location
λ > 1 ได้ แต่ λ 越大 → Collision Chance 越高 λ > 1 → Guarantee ≥ 1 Collision (Pigeonhole Principle)

Complexity Analysis

Operation Worst-case Time หมายเหตุ
Successful Search O(Y) 掃描 Bucket ทั้ง Y Slots
Unsuccessful Search O(Y) 掃描 Bucket ทั้ง Y Slots
Insertion O(Y) สมมติ Success, ไม่ Handle Failed Insertion ดี
Deletion O(Y) 掃描หา Item แล้วลบ
Storage O(M × Y) Fixed Size 2D Array

สรุป

Bucketing เรียบง่าย เหมาะ Disk-based (Block = Bucket) แต่ Memory-based ใช้ Chaining/Open Addressing ดีกว่า เพราะ Space Efficiency และ Flexibility สูงกว่า