散列表查找成功和不成功时的平均查找长度

已知散列表长度为13,散列函数为H(key)=key % 11,处理冲突的方法为线性探测法,请画出依次插入关键字(10,8,40,27,21,57,46,23,19,56)以后的散列表,并计算查找成功和不成功时的平均查找长度。

解:散列表是哈希表的另一种叫法,散列函数为H(key)=key % 11用的是除留余数法,线性探测法就是当遇到冲突时,H(key)=(key+d )% 11,key为关键字,若还是遇到冲突,D(i)=(H(key)+(i) )% 11,依次往下去,直到地址不冲突,若一直没找到,查找失败。可取d=1.

10%11=10  将10放A[10];

 8%11=8     将8放A[8];

 40%11=7   将40放A[7];

 27%11=5     将27放A[5];

 21%11=10    因为A[10]已被占用,遇到冲突,使用线性探测法,D(1)=(10+1 )% 11=0,A[0]没被占用,将21放A[0];

 57%11=2     将57放A[2];

46%11=2       因为A[2]已被占用,遇到冲突,使用线性探测法,D(1)=(2+1 )% 11=3,A[3]没被占用,将46放A[3];

23%11=1       将23放A[1];

19%11=8       因为A[8]已被占用,遇到冲突,使用线性探测法,D(1)=(8+1 )% 11=9,A[9]没被占用,将19放A[9];

扫描二维码关注公众号,回复: 3299183 查看本文章

56%11=1       因为A[1]已被占用,遇到冲突,使用线性探测法,D(1)=(1+1 )% 11=2,A[2]被占用,D(2)=(1+2 )% 11=3,A[3]被占用,D(3)=(1+3 )% 11=4,将56放A[4];

成功查找的平均长度=查找次数总和/关键字总个数=(6*1+3*2+4)/10=1.6

第n个位置不成功时的比较次数为,第n个位置到第1个没有数据位置的距离.

不成功查找的平均长度=不成功总次数/表的长度=(7+6+5+4+3+2+1+5+4+3+2+1+1)/13=3.38.

地址 0 1 2 3 4 5 6 7 8 9 10 11 12
关键字 21 23 57 46 56 27   40 8 19 10    
成功查找次数 2 1 1 2 4 1   1 1 2 1    
不成功查找次数 7 6 5 4 3 2 1 5 4 3 2 1 1

猜你喜欢

转载自blog.csdn.net/yincheng_917/article/details/82725499
今日推荐