一、举个例子:数组长度10 散列函数x%7。
如 13 先计算散列 13%7 = 6 如果没有冲突的话会被放在第六个格子里。
现在散列表中 : (x为已经有一个元素 o表示空)
0 x
1 x
2 x
3 o
4 o
5 x
6 x
7 x
8 x
9 o
计算失败概率 :
思路如下,任意出现一个数字(概率均等)经过hash函数以后 0 ~ 6的概率均等 现在假设 输入一个数字 hash计算结果是1,去1里查找,结果发现位置1(接下来简称pos1)不是目标元素(查找失败),于是线性探查找到了2(还是失败)然后找三,发现没有,于是确定所找元素不在哈希表里。
以上是查找过程,以此类推失败的情况下需要找 4,3,2,1,1,5,4 (7和7以后没得找,因为任何数膜7都<7)失败概率。
二、查找不成功的次数表如下表所示
Key 7 8 30 11 18 9 14
Count 3 2 1 2 1 5
所以ASLunsuccess= (3+2+1+2+1+5+4)/ 7 = 18/7。
扩展资料:
散列函数
在进行查找时,在记录的存储位置与它的关键字之间建立一个确定的对应关系h,以线性表中每个元素的关键字K为自变量,通过函数h(K)计算出该元素的存储位置,我们将h函数称为散列函数或哈希函数。h(K)的值称为散列地址或哈希地址。
例:
假定一个线性表为A=(18,75,60,43,54,90,46),选取散列函数为:
h(K)=K%m 取m=13
则得每个元素散列地址:
h(18)=18 % 13=5 h(75)=75 % 13=10 h(60)=60 % 13=8 h(43)=43 % 13=4
h(54)=54 % 13=2 h(90)=90 % 13=12 h(46)=46 % 13=7
参考资料来源:百度百科-散列查找