栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

创建两个数字的哈希码

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

创建两个数字的哈希码

我为任意一组可哈希项创建哈希码的常规方法是:

int hash = 23;hash = hash * 31 + item1Hash;hash = hash * 31 + item2Hash;hash = hash * 31 + item3Hash;hash = hash * 31 + item4Hash;hash = hash * 31 + item5Hash;// etc

在你的情况下

item1Hash
可能只是
a
,也
item2Hash
可能只是
b

只要它们是质数(或至少是互质数),则23和31的值就相对无关紧要。

显然仍然会有冲突,但是您不会遇到以下常见的令人讨厌的问题:

hash(a, a) == hash(b, b)hash(a, b) == hash(b, a)

如果您更多地了解

a
b
可能是什么,那么您可能会做得更好,但这是一个很好的初始实现,很容易记住和实现。请注意,如果有可能在勾选“检查算术上溢/下溢”的情况下构建程序集,则应将其全部置于未检查的块中。(对于此算法,溢出是可以的。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号