双重哈希

双重哈希属于开放地址哈希中的一种解决冲突方案,也就是说如果一次哈希不能解决问题的时候,要再次哈希,与再哈希方法不同的是,第二次使用的哈希函数与第一次是不同的:

(hash1(key) + i * hash2(key)) % TABLE_SIZE

一般来讲,

hash1(key) = key % TABLE_SIZE
hash2(key) = PRIME – (key % PRIME)

其中PRIME一般选一个比TABLE_SIZE小的一个质数就可以了,例如如果TABLE_SIZE=16,那么PRIME=13

注意:第二个哈希函数结果不能为0,而且第二个哈希函数要覆盖表的每一个单元。

至于i就从1开始尝试就是了,如果有冲突,则再尝试i++

猜你喜欢

转载自blog.csdn.net/sinat_36246371/article/details/79365831