首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

哈希表的数组容量为啥最好是质数

2012-09-09 
哈希表的数组容量为什么最好是质数RT哪位大神能详细的解释下么?[解决办法]你说的是用 取余 做HASH函数的情

哈希表的数组容量为什么最好是质数
RT
哪位大神能详细的解释下么?

[解决办法]
你说的是用 取余 做HASH函数的情况吧

好的HASH函数需要把原始数据均匀地分布到HASH数组里

原始数据不大会是真正的随机的,可能有某些规律,

比如大部分是偶数,这时候如果HASH数组容量是偶数,容易使原始数据HASH后不会均匀分布。
比如 2 4 6 8 10 12这6个数,如果对 6 取余 得到 2 4 0 2 4 0 只会得到3种HASH值,冲突会很多
如果对 7 取余 得到 2 4 6 1 3 5 得到6种HASH值,没有冲突

同样地,如果数据都是3的倍数,而HASH数组容量是3的倍数,HASH后也容易有冲突
用一个质数则会减少冲突的概率

热点排行