C++-哈希表关于哈希函数的选择
最近作做一个小程序,使用了哈希表,但是发现我的哈希函数选择不好,影响了效率,请问各位高手对于哈希函数的选择有什么好的建议?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
最近作做一个小程序,使用了哈希表,但是发现我的哈希函数选择不好,影响了效率,请问各位高手对于哈希函数的选择有什么好的建议?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
有一种不发生冲突的Hash函数,名字叫“完美哈希函数”(Perfect Hash Function,简称PHF)
还有个小伙伴,叫做“最小完美哈希函数”(Minimal Perfect Hash Function,简称MPHF)
有人开发了专门的工具,用于生成MPHF,不过,PHF或MPHF是针对静态集合的。也就是,在使用PHF或MPHF时,所有的 KEY 值是事先已知并且固定的。
生成PHF的工具请参考这里
这是Java中对于字符串的Hash值计算的算法,仅供参考:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
这个算法还是能够产生比较有效的Hash值的