Hash 避免散列冲突的分离链散列

Hash 避免散列冲突的分离链散列,hash,chaining,Hash,Chaining,我对哈希表的了解有限,目前正在学习。我有一个关于通过开放散列或分离链散列解决散列冲突的问题 我知道,本例中的散列桶持有指向链接列表的指针,其中映射到同一个键的所有元素都被链接。因此,搜索复杂度的顺序是o(n),其中n是链表中的元素数。有没有办法让这更简单 另外,如果链表的大小有限制,比如最多只能容纳5个元素,如果有5个以上的元素散列到同一个bucket中,那么处理这种情况的最佳方法是什么 非常感谢您提供有关上述内容的更多信息和帮助。哈希冲突不应该太常见,否则您会做错事情(例如,哈希函数不好或哈希

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

我知道,本例中的散列桶持有指向链接列表的指针,其中映射到同一个键的所有元素都被链接。因此,搜索复杂度的顺序是o(n),其中n是链表中的元素数。有没有办法让这更简单

另外,如果链表的大小有限制,比如最多只能容纳5个元素,如果有5个以上的元素散列到同一个bucket中,那么处理这种情况的最佳方法是什么


非常感谢您提供有关上述内容的更多信息和帮助。

哈希冲突不应该太常见,否则您会做错事情(例如,哈希函数不好或哈希表不够大)。因此,每个链表中的元素数量应该是最小的,O(n)复杂度应该不会太差

从理论上讲,您可以将其替换为许多其他数据结构之一。例如,二元搜索树将获得O(logn)搜索时间(假设项目具有可比性),但插入时间将达到O(logn)而不是O(1),并且将占用更多空间


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

哈希冲突不应该太常见,否则您就做错了(例如,哈希函数不好或哈希表不够大)。因此,每个链表中的元素数量应该是最小的,O(n)复杂度应该不会太差

从理论上讲,您可以将其替换为许多其他数据结构之一。例如,二元搜索树将获得O(logn)搜索时间(假设项目具有可比性),但插入时间将达到O(logn)而不是O(1),并且将占用更多空间

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