今天看到一道基础题,将解题过程记录下来,和大家分享。
1、题目:
已知一个线性表(38,25,74,63,52,48),假定采用h(k)=k%6计算散列地址进行散列存储,若用线性探测的开放定址法处理冲突,则在该散列表上进行查找的平均查找长度为()。
A. 1.5 B. 1.7 C. 2 D. 2.3
2、解题过程:
(1)计算h(k): 38%6 = 2 25%6 = 1 74%6 = 2 63%6 = 3 52%6 = 4 48%6 = 0
(2)定址:
地址: 0 1 2 3 4 5
1、线性表第1个元素(38): 38(第1 次不冲突)
2、线性表第2个元素(25): 25(第1次不冲突)
3、线性表第3个元素(74): 74(第1 次冲突,地址 + 1)
4、线性表第3个元素(74): 74(第2 次不冲突)
5、线性表第4个元素(63): 63(第1 次冲突,地址 + 1)
6、线性表第4个元素(63): 63(第2 次不冲突)
7、线性表第5个元素(52): 52(第1 次冲突,地址 + 1)
8、线性表第5个元素(52): 52(第2 次不冲突)
9、线性表第6个元素(48): 48(第1次不冲突)
经过上述定址过程,线性表中的各个元素都有了唯一的地址。
3、结果
线性表中的 6 个元素,经过9次定址,
在该散列表上进行查找的平均查找长度为:9/6 = 1.5, 答案选:A