上题中 ,构造散列表时使用链地址法处理冲突,重新构造散列表,画出该表,并计算在等概率的情况下,查找成功时的平均查找长度。
时间: 2023-12-04 20:02:50 浏览: 61
计软实验一:图与散列表1
好的,我可以回答你的问题。
如果使用链地址法处理冲突,我们可以将具有相同散列值的数据放在同一个链表中。具体地,对于每个散列值,我们都维护一个链表,将具有该散列值的数据插入到对应的链表中。如果发生冲突,就直接将数据插入到链表的末尾。
按照上述方法,将数据插入散列表中,得到的散列表如下所示:
```
散列值 数据
0 33 -> 1
1 34
2 13 -> 12
3
4 38
5 27
6 22
7
8
9
10
```
其中,箭头表示链表中的指针关系。
接下来,我们计算在等概率的情况下,查找成功时的平均查找长度。由于散列表的大小为11,因此查找成功的概率为 $p = 1/8$。查找成功时的平均查找长度为:
$$
ASL = \frac{1}{p} \sum_{i=1}^{8} i \cdot p_i = 8\left(\frac{1}{8}\cdot1 + \frac{1}{8}\cdot\frac{1}{2}\cdot2 + \frac{1}{8}\cdot\frac{2}{3}\cdot3 + \frac{1}{8}\cdot\frac{1}{4}\cdot4\right) = 1.875
$$
其中,$p_i$ 表示查找成功时,需要查找 $i$ 个位置的概率。
因此,在等概率的情况下,查找成功时的平均查找长度为1.875。
阅读全文