独立的碰撞处理链描述碰撞。两个键可能提供相同的值,因为对于一个大整数或字符串的键,散列函数返回一个小数字。必须使用冲突处理机制来处理新添加的键映射到已被占用的散列表槽的情况。 与大表碰撞的频率是多少?即使我们有一个大的表来存放键,碰撞仍然非常频繁。生日悖论是一个重要的发现。在只有23个人的情况下,两个人同一天生日的概率是50%。 处理碰撞主要有两种处理碰撞的方法:
本文只提到独立链。下面的文章将介绍开放寻址。 独立的链接:使用单独的链,数组被实现为链,这是一个链表。处理事故最流行和最常用的方法之一是单独锚链。 该方法是使用链表数据结构实现的。因此,当许多元素被散列到同一个槽索引中时,这些元素被添加到一个链中,这是一个单链表。这里,用散列到相同槽索引的所有条目创建一个链表。现在,仅仅使用线性遍历,我们就可以用键K来搜索链表。如果任何项的内在键等于K,那么我们就确定了我们的项。如果我们一直搜索到链表的末尾,仍然找不到它,那么这个条目就不存在。因此,在单独的链接中,我们得出结论,如果两个不同的条目具有相同的哈希值,我们将它们依次存储在同一个链表中。 让我们使用“key mod 7”作为我们的简单哈希函数,其键值如下:50、700、76、85、92、73、101。 ![]() 优点:
缺点:
链接性能:在每个键被散列到任何表槽的可能性相等的前提下,可以评估散列的性能(简单统一散列)。 存储链的数据结构:
总结
下一个话题
检查给定的数组是否包含彼此距离为k的重复元素
|