使用Double Hashing解决第二种情况冲突

时间:2016-10-31 22:08:38

标签: data-structures hash hashtable collision double-hashing

如果提供第二个碰撞案例,这是如何解决的?

即:

我们假设我们有一系列数字:

[22,1,13,11,24,-1,-1,-1,-1,-1,-1]

其中-1表示数组中为空....

如果我们尝试使用

插入33
{{choice[column]}}

传入33将得到2,其中阵列位置2已被占用(13)。我们如何处理这种碰撞案例?我们将返回的mod值再次传递给h2吗?我们替换值@该数组值吗? (我怀疑后者不是这样。)

编辑:为h2添加括号

1 个答案:

答案 0 :(得分:0)

使用双重散列,您可以将位置计算为:

pos = (h1 + i * h2) mod table_size

这里的技巧是增加i,直到找到哈希表中的空位置。因此,计算不仅进行一次,而且多次进行直到找到一个时隙。有关详细信息,请参阅Wikipedia article

其他形式的开放式寻址类似于双重哈希,效率非常高,例如cuckoo hashingrobin-hood hashing