【发布时间】:2015-05-17 19:06:24
【问题描述】:
我在我想要存储字符串的散列程序中使用 DJB2 散列函数。但是这个哈希函数返回一个非常大的无符号整数值作为返回值(哈希表索引)。如果我的表非常小(比如 13),有没有办法将这个大值转换为更小的值。我只想尽可能避免碰撞。
DJB2哈希函数代码如下:
unsigned int djb_hash(string s)
{
int i;
unsigned int h;
h = 5381;
for (i = 0; i < s.size(); i++)
{
h = (h << 5) + h + s[i];
}
return h;
}
【问题讨论】:
-
模数不够好?
标签: c++ hash string-hashing