我正在用 C 语言研究哈希表,并且正在测试字符串的哈希函数。
我尝试的第一个功能是添加 ascii 代码并使用模 (% 100
)但我的第一次数据测试结果很差:130 个单词有 40 次碰撞。
最终输入数据将包含 8000 个单词(它是存储在文件中的字典)。哈希表声明为int table[10000]
并包含该单词在 .txt 文件中的位置。
- 哈希字符串的最佳算法是什么?
- 以及如何确定哈希表的大小?
我取得了不错的成绩djb2 http://www.cse.yorku.ca/~oz/hash.html作者:丹·伯恩斯坦。
unsigned long
hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)