散列值计算的时候为什么要用到质数?这个质数怎么选择?比如137
最近刚学过,散列表解决冲突有两种方法,一是分离链接法,个人感觉和质数关系不大,第二种是开放定址法,如果非质数,碰撞几率较大,而且备选单元个数也会少很多。我看得数据结构与算法分析一书。
正在了解这个散列, 在想能否通过建立质数key的时候判断是否表中已经含有key就跳过?不过可能多一次遍历,
听说过十七年蝉吗?
********补充 *****************
对于踩我的那几个同学,估计你们也没听过这个梗,我还是补充一下吧。
我回答的另一个问题:hashtable的size, 为什么一般选为质数?
用质数是为了防止冲突。比如一个hashtable(长度为3)的哈希算法是:
a[0]*1 + a[1]*2 + a[2]*4
那么
[0,1,1] [2,2,0] [4,1,0] [2,0,1] ……
就会产生同样的值 6。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
最近刚学过,散列表解决冲突有两种方法,一是分离链接法,个人感觉和质数关系不大,第二种是开放定址法,如果非质数,碰撞几率较大,而且备选单元个数也会少很多。
我看得数据结构与算法分析一书。
正在了解这个散列, 在想能否通过建立质数key的时候判断是否表中已经含有key就跳过?不过可能多一次遍历,
听说过十七年蝉吗?
********补充 *****************
对于踩我的那几个同学,估计你们也没听过这个梗,我还是补充一下吧。
我回答的另一个问题:hashtable的size, 为什么一般选为质数?
用质数是为了防止冲突。比如一个hashtable(长度为3)的哈希算法是:
那么
就会产生同样的值 6。