【发布时间】:2021-01-19 17:44:07
【问题描述】:
我了解线性探测中的问题,即由于后续索引将存在元素簇。但是我不明白The bigger the cluster gets, more it reduces the performance.这句话是如何降低哈希性能的?
【问题讨论】:
标签: algorithm data-structures hash linear-probing quadratic-probing
我了解线性探测中的问题,即由于后续索引将存在元素簇。但是我不明白The bigger the cluster gets, more it reduces the performance.这句话是如何降低哈希性能的?
【问题讨论】:
标签: algorithm data-structures hash linear-probing quadratic-probing
对于第一次插入空哈希表,我们保证不会遇到任何冲突。假设我们很不走运——我们的第二次插入哈希到与第一次相同的插槽,我们必须执行(非常小的)线性搜索来找到下一个空闲插槽。对于 n 个时隙的表,这种冲突的概率是 1/n。 现在我们在一张原本空荡荡的桌子上有两个并排。我们下一次插入与这个集群碰撞的几率是多少?不是第二次插入时的 1/n,而是现在 2/n - 机会增加了。一些东西散列到 k 槽簇的几率是 k/n,当它们这样做时,它们必须一直线性搜索到簇直到最后,不仅浪费时间,而且增加了簇的长度! 问题是该模式是自我强化的,并且当您的表变满时,您的插入时间可能会接近 O(n)。
【讨论】: