Hash 探测每个R';散列的第四个位置
从我的演讲中我很好奇: 假设我们想要探测函数x mod 10和R=2的每个Rth位置。 现在对4、14、114、1114和11114进行哈希运算:Hash 探测每个R';散列的第四个位置,hash,probing,Hash,Probing,从我的演讲中我很好奇: 假设我们想要探测函数x mod 10和R=2的每个Rth位置。 现在对4、14、114、1114和11114进行哈希运算: 4将进入槽4 14将首先尝试进入插槽4,但看到它已满,它将进入插槽6,然后(+R) 114将发现插槽4已满,将转到插槽6(+R),但既然已满,它将转到插槽0(+2R) 但对于1114来说,它似乎永远都在继续——不管它走到哪里,它都会跑进一个满槽。这种情况下会发生什么?对于开放寻址哈希表上无法解决的哈希冲突,有三种选择: 使用不同的散列函数重新散列
- 4将进入槽4
- 14将首先尝试进入插槽4,但看到它已满,它将进入插槽6,然后(+R)
- 114将发现插槽4已满,将转到插槽6(+R),但既然已满,它将转到插槽0(+2R)
但对于1114来说,它似乎永远都在继续——不管它走到哪里,它都会跑进一个满槽。这种情况下会发生什么?对于开放寻址哈希表上无法解决的哈希冲突,有三种选择:
常用的组合包括带素数大小哈希表的二次探测,如果表小于半满,则保证插入成功;如果表未满,则保证插入成功。2个大小的哈希表有很多优点,唯一的缺点是它们对哈希算法的质量不宽容。使用探测遍历整个表时会发生什么情况取决于算法的定义方式,但通常会有一个冲突存储桶的值链表。