2014-02-18 30 views
0

我正在制作一个程序,使用单独的链接将文件中的字符串读取到哈希表中,并且我想使用djb2哈希算法。例如,当我散列“welcome”这个词时,我得到一个散列索引7573091155873627.这是否意味着拥有我的散列表的数组需要这个庞大的数据?我只希望阅读大约100个左右的单词。我只想确保我可以将我的哈希表设置为保存100个项目,并仍然使用此算法。哈希索引如何与数组大小相关?

+2

请考虑余下的操作。 –

回答

2

当你把一个进入一个哈希表的数组,你选择的桶是

hashvalue modulo size of the array 

硅存在具有非常大的哈希值没有问题。相反,它们允许您使用任意大型数组,这允许您散列任意数量的项目。实际上,在标准实现中,当哈希数组变得太满时,数组的大小会增加。

+0

所以,即使我的哈希表数组只能保存10个项目,我仍然可以使用超过6万亿的哈希索引? – Josh

+0

该方法产生的碰撞次数与所讨论的数组大小成正比。 – emcas88

+0

是的。 623492309482348的剩余部分是[0..9] – hivert