原文内容来自免费考研论坛,请点击查看全文
http://bbs.freekaoyan.com/viewthread.php?tid=200828
例如以下哈希表:
散列函数为hash(f(x))=x MOD 11
地址:0 1 2 3 4 5 6 7 8 9 10
数据:33 1 13 12 34 38 27 22
查找不成功时的平均查找长度
各位高手,这个问题是这样的:
“在0~16的散列区中,对于关键字序列(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)以及哈希函数H(x)=小于等于i/2的最大整数,这里i为关键字第一个字母在字母表中的序号。用线性探测开放定址法处理冲突,如何求出查找不成功的平均查找长度?”
---------------------------------
有没有知道确切答案的啊,帮帮忙啊
---------------------------------
不是有专门的公式可用吗?
---------------------------------
看严蔚敏的课本第261面中间:“分析长度为M的哈西表中添装有N个纪录时查找不成功的平均查找长度这个问题,相当于在这个表中再添加第N 1个纪录时所需比较的次数的期望值。”
比如:当你MOD11时,第N 1个数MOD后的值可能是0~10。当它是0时就要放在第一个位置,如果第一个位置有纪录,就要处理冲突,向后移到一个空位置,记住移动的位置数,就是在0位置上查找不成功的值,然后分别分析在1~10位置上的值,最后相加除以11。(注意:不是除表长M)
---------------------------------
jiushi !jiushi !duo kan shu !
---------------------------------
应该这样做吧:先构造哈希表
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
apr aug dec feb jan mar may june july sep oct nov
1 2 1 1 1 1 2 4 5 2 5 6
查找不成功:(5 4 3 2 1 9 8 7 6 5 4 3 2 1 1 1 1)/17=63/17
各位看看对不对
---------------------------------
我看的好多都是说 除以表长啊,到底是除仪以表长还是MOD后的值啊?
---------------------------------
当你MOD11时,第N 1个数MOD后的值可能是0~10。当它是0时就要放在第一个位置,如果第一个位置有纪录,就要处理冲突,在处理冲突时仍然要使用线性探测,这时就不是在0~10之间移动了啊,要在0~表长之间向后移到一个空位置,
---------------------------------
我看到有些学校的真题答案上,也是说除以表长的啊