【问题】
设哈希函数
H(K)=3∗K mod 11,哈希地址空间为
0~10,对关键字序列
(32,13,49,24,38,21,4,12),按下述两种解决冲突的方法构造哈希表,并分别求出等概率下查找成功时和查找失败时的平均查找长度
ASLsucc 和
ASLunsucc。
(1)线性探测法;
(2)链地址法。
【解答】
(1)线性探测法:
① 计算查找每个关键字成功时需要比较的次数的平均值。
ASLsucc=8(1+1+1+2+1+2+1+2)=811
② 计算查找不成功时的ASL时,此时看散列函数MOD的是几。看每个位置查找不成功需要比较的次数,即该位置到下一个空位的比较次数。
ASLunsucc=11(1+2+1+8+7+6+5+4+3+2+1)=1140
注:这里求的是MOD出来的位置的平均查找失败比较次数,不是关键字个数也不是表长。
(2)链地址法:
ASLsucc=8(1∗5+2∗3)=811
ASLunsucc=11(1+2+1+2+3+1+3+1+3+1+1)=1119