【发布时间】:2016-02-24 04:35:23
【问题描述】:
我正在阅读有关 HashTable 的内容,并找到了一个易于理解的好来源Here.
但我对双散列函数感到困惑。这是双重哈希函数的详细信息。
双重哈希使用将第二个哈希函数应用于 发生碰撞时的键。第二个哈希函数的结果 将是形成要插入的碰撞点的位置数。
第二个功能有几个要求:
it must never evaluate to 0 must make sure that all cells can be probed第二个流行的哈希函数是:Hash2(key) = R - (key % R) 其中 R 是一个小于表大小的素数。
这是双重哈希函数的图像。
现在混乱开始了。正如他们在图像中所说的那样。 49 应该在来自[9] 索引的7 位置。那么实际位置将是[6] 那么为什么他们将49 放在[0] 索引处?其他剩余整数也一样。
如果没有空索引会发生什么?
【问题讨论】:
标签: c++ data-structures hash hashtable double-hashing