设有一组关键字(9,01,23,14,55,20,84,27),采用哈希函数:H(key)=key %7 ,表长为10,用开放地址法的线性探测再散列法处理冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。
时间: 2023-10-24 09:06:06 浏览: 231
4HASH函数1
将关键字按照哈希函数 $H(key)=key\%7$ 的结果分别插入哈希表中,如果发生冲突,则采用线性探测再散列法处理冲突,即向下寻找下一个空的位置。
插入过程如下:
1. 将关键字 9 插入哈希表中,位置为 $H(9)=2$。
2. 将关键字 01 插入哈希表中,位置为 $H(01)=1$。
3. 将关键字 23 插入哈希表中,位置为 $H(23)=2$,位置 2 已经被占用,因此向下查找下一个空位置,发现位置 3 为空,将关键字 23 插入位置 3。
4. 将关键字 14 插入哈希表中,位置为 $H(14)=0$。
5. 将关键字 55 插入哈希表中,位置为 $H(55)=6$。
6. 将关键字 20 插入哈希表中,位置为 $H(20)=6$,位置 6 已经被占用,因此向下查找下一个空位置,发现位置 7 为空,将关键字 20 插入位置 7。
7. 将关键字 84 插入哈希表中,位置为 $H(84)=0$,位置 0 已经被占用,因此向下查找下一个空位置,发现位置 1 为空,将关键字 84 插入位置 1。
8. 将关键字 27 插入哈希表中,位置为 $H(27)=6$,位置 6 和位置 7 都已经被占用,因此向下查找下一个空位置,发现位置 8 为空,将关键字 27 插入位置 8。
最终哈希表为:
|位置|关键字|
|---|---|
|0|14|
|1|84|
|2|9|
|3|23|
|4| |
|5| |
|6|55|
|7|20|
|8|27|
|9| |
其中位置 4 和位置 5 为空。
查找关键字的过程如下:
1. 查找关键字 14,计算哈希函数值 $H(14)=0$,发现位置 0 存在关键字 14,平均查找长度为 1。
2. 查找关键字 27,计算哈希函数值 $H(27)=6$,发现位置 6 存在关键字 55,向下查找位置 7,发现关键字不匹配,向下查找位置 8,发现位置 8 存在关键字 27,平均查找长度为 3/2=1.5。
因此,查找成功的平均查找长度为 $(1+1.5)/2=1.25$。
阅读全文