hashtable中解决冲突的方法
线性探测
使用hash函数计算出的位置如果已经有元素占用了,则向后依次寻找,找到表尾则回到表头,直到找到一个空位。
开链
每个表格(bucket)维护一个list,如果hash函数计算出的格子(bucket)相同,则按顺序存在这个list中。
再散列
发生冲突时使用另一种hash函数再计算一个地址,直到不冲突。
二次探测
使用hash函数计算出的位置如果已经有元素占用了,按照 1 2 1^2 12、 2 2 2^2 22、 3 2 3^2 32…的步长依次寻找,如果步长是随机数序列,则称之为伪随机探测。
公共溢出区
一旦hash函数计算的结果相同,就放入公共溢出区。