这个是答案错了吧,我算出来是15/9
首先,我们需要使用 Hash(key) = key mod 11 来计算每个关键字的哈希值。
然后,我们需要按照关键字关键码集 {47,7,29,11,16,92,22,8,3} 的顺序将其依次插入哈希表中。每当遇到冲突时,我们就需要使用线性探测法来解决冲突,即将关键字插入到下一个空位置。
构造出来的哈希表如下:
| 47 | 22 | 92 | 29 | 11 | 16 | 8 | 3 | 7 | X | X |
| 0 | 9 | 2 | 3 | 4 | 5 | 7 | 8 | 10 | X | X |
对于每个关键字,我们都需要进行一次查找操作。我们可以记录每次查找操作需要移动的步数,最后求出这些步数的平均值作为ASL。
对于第一个关键字47, 它的哈希值为47 mod 11 = 0,所以它直接插入哈希表中第0个位置,查找次数为0。
对于第一个关键字47, 它的哈希值为47 mod 11 = 0,所以它直接插入哈希表中第0个位置,查找次数为0。
对于第二个关键字7, 它的哈希值为7 mod 11 = 7,发现第7个位置已经被占用,所以需要使用线性探测法,移动到第8个位置,查找次数为1。
对于第三个关键字29, 它的哈希值为29 mod 11 = 3,发现第3个位置已经被占用,所以需要使用线性探测法,移动到第4个位置,查找次数为1。
对于第四个关键字11, 它的哈希值为11 mod 11 = 0,发现第0个位置已经被占用,所以需要使用线性探测法,移动到第1个位置,查找次数为1。
对于第五个关键字16, 它的哈希值为16 mod 11 = 5,发现第5个位置已经被占用,所以需要使用线性探测法,移动到第6个位置,查找次数为1。
对于第六个关键字92, 它的哈希值为92 mod 11 = 9,发现第9个位置已经被占用,所以需要使用线性探测法,移动到第10个位置,查找次数为1。
对于第七个关键字22, 它的哈希值为22 mod 11 = 0,发现第0个位置已经被占用,所以需要使用线性探测法,移动到第1个位置,查找次数为2。
对于第八个关键字8,它的哈希值为8 mod 11 = 8,发现第8个位置没有被占用,所以插入到第8个位置,查找次数为1。
对于第九个关键字3, 它的哈希值为3 mod 11 = 3,发现第3个位置没有被占用,所以插入到第3个位置,查找次数为1。
最后,得到的哈希表如下:
|位置|关键字|
|0|22|
|1|3|
|2| |
|3|8|
|4|47|
|5|7|
|6|16|
|7| |
|8|11|
|9|92|
|10|29|
计算平均查找长度ASL:
ASL = (1+2+1+1+1+1+1+1+1+1)/9 = 11/9