【问题标题】:How does a hash index relate to the array size?哈希索引与数组大小有何关系?
【发布时间】:2014-02-18 20:38:34
【问题描述】:

我正在编写一个程序,使用单独的链接将文件中的字符串读入哈希表,我想使用djb2 哈希算法。例如,当我对“欢迎”这个词进行哈希处理时,我得到一个哈希索引 7573091155873627。这是否意味着包含我的哈希表的数组需要如此庞大?我真的只希望阅读大约 100 字左右。我只是想确保我可以将我的哈希表设置为包含 100 个项目并且仍然使用这个算法。

【问题讨论】:

  • 请考虑余数运算。

标签: c arrays algorithm hash hashmap


【解决方案1】:

当你把一个条目放入一个哈希表的数组中时,你选择的桶是

hashvalue modulo size of the array 

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

【讨论】:

  • 所以即使我的哈希表数组只打算容纳 10 个项目,我仍然可以使用超过 6 万亿的哈希索引?
  • 这种方法产生的碰撞次数与相关数组的大小成正比。
  • 是的。 623492309482348 的余数是 [0..9] 中的数字
  • @Josh 在这种情况下使用哈希将毫无意义,但可以做到。
  • @emcas88 是的,这只是一个例子
猜你喜欢
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 2015-08-26
  • 1970-01-01
相关资源
最近更新 更多