如果采用线性探测,删除的成本是否低于单独链接的情况?

Is deletion less costly if linear probing is employed than in the case of separate chaining?

对于哈希表,正如我们所熟悉的那样,我们首先计算一个哈希函数。然后我们需要处理碰撞;当两个或多个要插入的键散列到同一个索引时的情况。执行此操作的两种方法包括单独链接和线性探测。我的问题又来了,删除的时候,哪种方式成本更低?

我最初的想法是,如果线性探测中的集群很大,并且我们想在集群中尽早删除一些键,那么将所有键重新插入到已删除键的右侧可能会变得代价高昂。

如果此声明完全有效,是否有足够的理由假设单独链接在删除时比线性探测更有效?

在线性探测的情况下,删除会影响搜索哈希值早于清空单元格的其他键,但这些键存储在空单元格之后的位置。清空的单元格会导致这些搜索错误地报告密钥不存在。因此,当一个单元格被清空时,需要向前搜索 table 的后续单元格,直到找到另一个空单元格或可以移动到该单元格的键,并且该过程需要继续进行直到找到空单元格。

但是分离链的情况下我们只需要从链表中删除值,并且从链表中删除值比线性探测的情况下的上述过程容易得多。