我只是试图理解线性探测逻辑。
使用开放地址法的哈希表,如何确认元素不在表中。
例如,假设您有一个10个桶的哈希映射。假设您散列密钥并插入它。现在,如果要插入元素A和B,并且哈希和缩小到相同的桶,则使用线性探测,元素A和B可能会彼此相邻。
现在,仅因为桶为空,并不意味着地图中不存在元素。例如,您在首先删除元素A后搜索元素B。首先,您会得到一个空桶,您期望B在其中,但您需要再探测一次,然后您会找到B。它确实存在。如果该逻辑正确,则每次都必须搜索整个表以确认关键字是否不存在吗?即每次O(n)性能。
我的意思是,难道您不需要浏览整张地图才能真正确认它不存在吗?
对于哈希映射的分离链接方法,这个问题不存在。
如果删除了John Smith,并且我们尝试找到Sandra Dee。
或者,使用线性寻址,您是否应该移动元素,以便没有这样的空洞。即,如果删除了John Smith,是否应将152到154的元素向后移动一个位置?我在描述中并没有真正看到它,但那可能有些道理。除非Ted Baker的哈希值为154而不是153。需要比我想象的更多的工作。
可能只需在每个桶中使用简单的链接列表。