已知哈希表长度为 8,哈希函数为 H(k)=kmod7,采用线性探测法处理冲突。 将下列关键字依次插入到哈希表中, 34, 36, 20, 16, 22 请写出存入数据后的哈希表。 若各关键字的检索概率相等,则平均查找长度为 (保留1位小数,末位四舍五入)。
时间: 2024-03-31 07:35:07 浏览: 156
Hash表存储数据,用再散列来解决地址冲突问题,计算平均查找长度,还可以通过Key值查找对应的value
首先,我们使用哈希函数 H(k)=kmod7 将关键字映射到哈希表中的位置。插入关键字时,如果该位置已经被占用,就使用线性探测法向后查找空的位置。
插入关键字 34:
H(34) = 34 mod 7 = 6,将 34 存入哈希表的第 6 个位置。
插入关键字 36:
H(36) = 36 mod 7 = 1,将 36 存入哈希表的第 1 个位置。
插入关键字 20:
H(20) = 20 mod 7 = 6,第 6 个位置已经被占用,向后查找空的位置,发现第 7 个位置为空,将 20 存入第 7 个位置。
插入关键字 16:
H(16) = 16 mod 7 = 2,将 16 存入哈希表的第 2 个位置。
插入关键字 22:
H(22) = 22 mod 7 = 1,第 1 个位置已经被占用,向后查找空的位置,发现第 2 个位置也被占用,继续向后查找,发现第 3 个位置为空,将 22 存入第 3 个位置。
最终得到的哈希表为:
| | 36 | 16 | | | | 20 | 22 |
平均查找长度的计算公式为:ASL = (p1 + 2p2 + 3p3 + ... + npn) / n,其中 pi 表示查找到第 i 个位置的概率,n 表示关键字个数。
对于本题中的哈希表,共有 5 个关键字,每个位置的检索概率相等,均为 1/8。因此,平均查找长度为:
ASL = (1/8 + 2/8 + 3/8 + 4/8 + 5/8) / 5 ≈ 0.9(保留一位小数,末位四舍五入)
阅读全文