Tôi đang tìm hàm băm tốc độ cao với phân bố tốt (gần đồng nhất) để sử dụng trong triển khai bảng băm.Thuật toán băm để thực hiện bảng băm
Bảng băm sẽ được sử dụng riêng để lưu trữ giá trị bằng khóa nguyên.
Tôi có thể sử dụng các bit dưới của số nguyên làm băm không?
ví dụ: int key = n & 15; và tạo một mảng với 16 vị trí để lưu trữ chúng.
Bất kỳ đề xuất nào?
Không có chức năng nào như hàm băm hoàn hảo. Tuy nhiên, nếu bạn muốn một số thuật toán với mã nguồn tương ứng, hãy xem tại đây: http://partow.net/programming/hashfunctions/index.html –
Lấy các bit thấp nhất có lẽ là điều tồi tệ nhất để làm. (nhưng: tất cả phụ thuộc vào phạm vi giá trị bạn mong đợi trong khóa int của bạn) Hãy thử trộn trong các bit trên là tốt, hoặc nhân với một số đủ lớn (lẻ, nguyên tố). Biết những gì mong đợi và đo lường nó. – wildplasser
Đăng bình luận của bạn như là một câu trả lời và tôi sẽ chấp nhận nó. –