散列表链地址法查找成功的平均查找长度怎么计算

如题所述

一、举个例子:数组长度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

参考资料来源:百度百科-散列查找

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-07
举个例子吧 数组长度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)失败概率
第2个回答  推荐于2016-12-01
举个例子吧 数组长度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)失败概率~~~自己算吧~本回答被提问者和网友采纳