搜索
您的当前位置:首页正文

线性探测法——精选推荐

来源:欧得旅游网
线性探测法

在开放定址算法⾥,线性探测法是散列解决冲突的⼀种⽅法,当hash⼀个关键字时,发现没有冲突,就保存关键字, 如果出现冲突,则就探测冲突地址下⼀个地址,依次按照线性查找,直到发现有空地址为⽌,从⽽解决冲突,

例如 关键字集合{7、8、30、11、18、9、14},散列函数为:H(key) = (keyx3) MOD 7, 设装填因⼦(元素个数/散列表长度)为0.7,那么散列表的长度为 10。

关键字(key)集合存放位置分别为:

70

83

306

115

185

96

140

由表格知道,这⾥的7和14、30和9、11和18出现了位置存放冲突。存放key=7时,散列表长度为10的表中其实没有冲突, 因为7是第⼀个存在到表中的key,所以⼀定不会有冲突的,所以7对应散列表的地址0。8、30、11存放的地址分别是3、 6 、5,但是到了key=18时候,发现存放的地址为5,⽽地址5已经存放了key=11,这时发⽣了地址冲突。根据线性探测法,算法会探测地址5的下⼀个地址,即地址6,⽽此时地址6已经存放了key=30,程序继续探测下⼀个地址,发现地址7位空,此时把key=18存放到地址7处。以此类推,最后得出的散列表为:

最后集合存放位置

01714

成功查找率:(1+1+1++1+3+3+2)/ 7不成功查找率

计算查找不成功的次数就直接找关键字到第⼀个地址上关键字为空的距离即可, 但根据哈希函数地址为MOD7,因此初始只可能在0~6的位置。等概率情况下,查找0~6位置查找失败的查找次数为:

   地址0,到第⼀个关键字为空的地址2的距离为3,因此查找不成功的次数为3.     地址1, 到第⼀个关键为空的地址2的距离为2,因此查找不成功的次数为2. 地址2, 到第⼀个关键为空的地址2的距离为1,因此查找不成功的次数为1. 地址3,到第⼀个关键为空的地址4的距离为2,因此查找不成功的次数为2. 地址4,到第⼀个关键为空的地址4的距离为1,因此查找不成功的次数为1.

地址5,到第⼀个关键为空的地址2(注意不是地址9,因为初始只可能在0~6之间,因此循环回去)的距离为5,因此查找不成功的次数为5.

地址6,到第⼀个关键为空的地址2(注意不是地址9,因为初始只可能在0~6之间,因此循环回去)的距离为4,因此查找不成功的次数为4.

不成功查找率:(3+2+1+2+1+5+4)/7

2 38

4

511

630

718

899

因篇幅问题不能全部显示,请点此查看更多更全内容

Top