如果提供第二个碰撞案例,这是如何解决的?
即:
我们假设我们有一系列数字:
[22,1,13,11,24,-1,-1,-1,-1,-1,-1]
其中-1表示数组中为空....
如果我们尝试使用
插入33{{choice[column]}}
传入33将得到2,其中阵列位置2已被占用(13)。我们如何处理这种碰撞案例?我们将返回的mod值再次传递给h2吗?我们替换值@该数组值吗? (我怀疑后者不是这样。)
编辑:为h2添加括号
答案 0 :(得分:0)
使用双重散列,您可以将位置计算为:
pos = (h1 + i * h2) mod table_size
这里的技巧是增加i
,直到找到哈希表中的空位置。因此,计算不仅进行一次,而且多次进行直到找到一个时隙。有关详细信息,请参阅Wikipedia article。
其他形式的开放式寻址类似于双重哈希,效率非常高,例如cuckoo hashing和robin-hood hashing。