关于线性探测(哈希表)有一件事对我来说并不直观。如果我将 key1 其哈希结果放入数组索引 1。然后我放入 key2 -> 数组索引 2。然后我将 key3 -> 再次放入数组索引 1,这将转到数组索引 3。然后当我搜索 key3 我应该去通过包含与我的哈希完全不同的键的索引。这不是浪费吗?如果序列真的很大并且包含许多键(例如,我有 20 个元素,然后为 null,对于导致数组索引从 0 到 20 的任何键,我必须遍历所有索引,尽管它们与我的哈希值不同我可以通过单独的链接来消除它)。
或者我们的散列函数(如果写得足够好)在索引之间平均分配键并且我们不断调整数组的大小以最大半满这一事实减轻了这种情况?