我正在做数据结构实践中的一个练习题
问题
1.Linear Probing 将(圈出一个):
i.随着插入更多值,性能会逐渐降低
ii.可能在下一次插入时找不到位置
iii.以上都不是
2.二次探测将(圈一个):
i.随着插入更多值,性能逐渐降低
ii.可能在下一次插入时找不到位置
iii.以上都不是
根据答案键(来自链接),1 的答案是 i,2 的答案是 ii。
我同意问题 1 的答案。线性探测将探索所有可能性,并在需要时回绕到哈希表的开头。因此它将在下一次插入时找到一个位置。如果您插入一堆映射到同一个存储桶或靠近一个存储桶的值,则会导致聚类并降低性能。
我明白为什么问题 2 的答案不是 i。二次增量概率通过不同的增量来避免聚类问题。然而,有些人可以解释二次探测“可能在下一次插入时找不到位置”背后的直觉吗?
二次探测函数定义为(来自二次探测)
第 n 个探针为 ((h(k) + n 2 ) mod TableSize) 直到探头达到零(未占用)
根据我在另一个问题Quadratic Probing中学到的知识,二次探针有可能击中每个桶。与线性探针一样,如果需要,二次探针也应该包含在哈希表的开头。那么为什么在这个问题中,二次探针不能在下一次插入时找到位置,而线性探针可以呢?