Hash冲突的解决办法(参考资料)
开放定址法
开放定址法,也称为再散列法。当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,根据以下公式计算出新的哈希地址 N
/**
* 说明:N 代表计算出来的新的哈希地址 TableSize为表长
*/
N = (H(key) + di) % TableSize i=1,2,3.....n
这里根据 di 的计算公式不同又可分为 线性探测、平方探测、双散列
- 线性探测
线性探测所采用的公式为
di = i
也就是说从哈希地址p开始,逐个地往后查找空余的插槽,将新元素放入进去
- 平方探测
平方探测所采用的公式为
di = \pm i ^ 2
也就是说从哈希地址p开始,以i的n次幂往前和往后查找空余的插槽,将新元素放入进去。注意平方探测这里是可以往前或往后查找的,而线性探测只能往后查找
<