我正在为一个项目实现一个哈希表,使用 3 种不同类型的探测。现在我正在研究线性。
对于线性探测,我了解探测的工作原理,我的导师暗示他希望步长为 1。问题是,不允许重复。所以我必须在插入之前“搜索”一个值,对吗?但是,如果表格被使用到所有单元格都被“占用”或“删除”怎么办?然后为了搜索特定键以确保它不在表中,我将不得不搜索整个表。这意味着搜索操作(以及扩展的插入操作)是 O(n)。
这似乎不对,我想我误解了一些东西。
我知道我不必在二次探测中遇到同样的问题,因为表格需要至少有一半是空的,并且它只会探测确定数量的元素。对于双重哈希,我不确定这将如何工作,因为我还需要搜索表以证明要插入的密钥不存在。但是,如果没有一个单元格“从未被占用”,我怎么知道如何停止搜索?
所以:在开放散列中,表中的每个条目过去都已被占用,是否需要 O(n) 探针来搜索元素(如果不允许重复则插入)?