单独的链哈希以避免哈希冲突

时间:2013-02-26 16:27:29

标签: hash chaining

我对哈希表的了解有限,我目前正在学习它。我有一个关于哈希冲突解决的问题,通过开放散列或单独的链散列。

据我所知,在这种情况下,哈希桶包含指向链表的指针,其中映射到同一键的所有元素都被链接。所以搜索复杂度将是o(n)的顺序,其中n是链表中元素的数量。有没有办法让这更简单?

此外,如果对链表的大小有限制,说它最多只能容纳5个元素,如果超过5个元素散列到同一个存储桶中,那么处理这种情况的最佳方法是什么?

任何有关上述内容以及任何帮助的更多信息的指示都将不胜感激。

1 个答案:

答案 0 :(得分:1)

散列冲突不应该太常见,否则你做错了(例如糟糕的散列函数或者没有足够大的散列表)。因此,每个链表中的元素数量应该是最小的,并且O(n)的复杂度不应该太差。

理论上,您可以将其替换为许多其他数据结构之一。例如,二叉搜索树将获得O(log n)搜索时间(假设项目具有可比性),但插入时间将最多为O(log n)而不是O(1),并且需要更多空间。

列表中的元素数量应该没有最大值。如果有的话,你可能会求助于探测(例如线性探测),但是删除可能是一场噩梦,因为你可能需要将元素移动很多。