我正在制作一个包含一个String数组单维和一个二维int数组的哈希表。我正在使用线性探测来进行碰撞检测,并且当我意识到如果检测到碰撞时,这个单词的hashCode将不再是索引,我真的正在通过这个程序。我如何保存该索引供以后使用?
答案 0 :(得分:1)
这是线性探测的缺点之一。如果存在冲突,则需要转到下一个可用索引,但这并不能确保下一个元素将是您要查找的元素,从而导致您的复杂性为O(n)而不是预期的O(1 )。您可以考虑为每个索引设置一个存储桶。如果存在冲突,您仍然可以使用正确的索引,您只需要遍历LinkedList,例如找到您要查找的值。
线性探测更适用于存储空间有限的设备。如果您在桌面上编写程序,我会建议使用存储桶方法或官方术语Separate Chaining。希望这有帮助
答案 1 :(得分:1)
在开放寻址中,线性探测不仅仅用于解决冲突;它还用于搜索正在查找的密钥。您总是从源自哈希码的索引开始,然后继续,直到找到您要查找的内容,或者到达空槽或具有不同哈希码的条目。这与单独的链接没有什么不同,在这里您还需要关注链,直到找到密钥。