拉链法处理散列冲突

时间:2024-10-19 02:51:52

1、我们通过一个例子来介绍拉链法。现在我们看下面这一个关键码集。它的散列表长度为11.

拉链法处理散列冲突

2、我们将所有的关键码对11取余。如下图所示。

拉链法处理散列冲突

3、我们准备如下图所示的散列表。

拉链法处理散列冲突

4、根据取余的值,将关键码放在相应的位置上。取余的值是几,就放在第几的位置上。比如关键码22,取余的值是0,我们就将22挂在第0个位置上。11取余的值也是0,我们直接挂在22后面即可。

拉链法处理散列冲突

5、接下来我们看拉链法查找成功时的平均查找长度。我们只需要将第一列被查找关键码的个数乘1,第二列被查找的关键码的个数乘2,两个值相加然后除以14(这里的14是关键码个数)。

拉链法处理散列冲突

6、比如我们这稍僚敉视个例子,第一列被查找个数是11(没有挂关键码的位置也需要查找),第二列被查找个数是5,将11和5相加再除以14,就得到了成功查找的平均查找长度。

拉链法处理散列冲突

7、那么查找不成功的平均查找长度呢?我们需要得到每一个位置上的关键码个数然后将它们相加,再除以11,这里的11是散列表长度。

拉链法处理散列冲突

8、比如我们这里第0位上有2个元素,第1个位置上有1个元素,第2个位置上有0个元素,依次类推。将所得个数相加除以11就得到了不成功的平均查找长度。

拉链法处理散列冲突
© 手抄报圈