设有一组关键字{29,01,13,15,56,20,87,27,69,9,10,74},散列函数为:H(key)=key 00000000% 17,采用线性测方法解决冲突。试在0到18的散列地址空间中对该关键字序列构造散列表,并计算成功查找的平均查找度。手写过程在0到18的散列地址空间中
时间: 2023-06-23 12:10:10 浏览: 72
根据散列函数H(key)=key 00000000% 17,可以得到以下散列地址:
```
key | H(key)
--------------
29 | 15
01 | 1
13 | 13
15 | 15
56 | 5
20 | 3
87 | 4
27 | 10
69 | 4
9 | 9
10 | 10
74 | 11
```
其中,关键字29和15的散列地址发生了冲突,需要使用线性探测法解决冲突。
在散列表中,我们将关键字29存放在散列地址15的位置,关键字15存放在散列地址16的位置。然后依次存放其他关键字,直到所有关键字都被存放在散列表中。如果发生冲突,就向后依次查找空闲的散列地址,直到找到空闲的散列地址为止。
构造好的散列表如下所示:
```
散列地址 | 关键字
-----------------
0 |
1 | 01
2 |
3 | 20
4 | 87
5 | 56
6 |
7 |
8 |
9 | 09
10 | 27
11 | 74
12 |
13 | 13
14 |
15 | 29
16 | 15
17 |
18 |
```
计算成功查找的平均查找度的公式为:
```
ASL = (n + ∑fi^2) / n
其中,
n 表示关键字个数
fi 表示查找到第i个关键字时的查找次数
```
对于该散列表来说,成功查找的平均查找度为:
```
ASL = (12 + 1^2 + 1^2 + 1^2 + 1^2 + 1^2 + 1^2 + 1^2 + 2^2 + 1^2 + 1^2 + 1^2) / 12
= 1.58
```
因此,该散列表的成功查找的平均查找度为1.58。
阅读全文