Trong các triển khai bảng băm khác nhau, tôi đã thấy "số ma thuật" cho khi một bảng băm có thể thay đổi được nên thay đổi kích thước (phát triển). Thông thường con số này là một nơi nào đó giữa 65% đến 80% của các giá trị được thêm vào mỗi khe được phân bổ. Tôi giả sử giao dịch giảm là số lượng cao hơn sẽ tạo ra khả năng có nhiều va chạm hơn và số lượng thấp hơn với chi phí sử dụng nhiều bộ nhớ hơn.khi nào để thay đổi kích thước bảng băm?
Câu hỏi của tôi là số này đến như thế nào?
Có tùy ý không? dựa trên thử nghiệm? dựa trên một số logic khác?
giấy thú vị –
Làm cách nào để thay đổi kích thước số lượng va chạm giảm? Hàm băm cho mảng dài hơn sẽ vẫn giống nhau vì vậy va chạm sẽ vẫn xảy ra cho cùng một khóa, phải không? –
@Core_Dumped - có, hàm băm vẫn giữ nguyên, và giá trị băm của các mục trong bảng vẫn giữ nguyên. Nhưng độ dài của các nhóm thay đổi, và do đó, trong đó các mục xô cư trú. Để thay đổi kích thước có nghĩa là thay đổi độ dài của mảng (thường) của các nhóm, sau đó tái nhóm tất cả các mục trong bảng băm. Chiều dài chuỗi mỗi xô giảm trung bình, có nghĩa là ít va chạm hơn. –