哈希算法 查找失败

  • Post author:
  • Post category:其他


散列函数:

H(key) = key % 11

;

现有数据:1,13,12,34,38,33,27,22

要求:使用

线性探测法

处理冲突

step1:先将所有的数据装入哈希表汇总

1%11 = 1,没有冲突

13%11 = 2,没有冲突

12%11 = 1,下标1的位置上放置了数据1,此时


冲突


了,使用 线性探测法处理冲突,下标1上已经有数据了,所以往后查,此时下标2上也有数据了,再往下查到下标3,此时下标3上没有数据,将12放在下标3的位置中

34%11 = 1,


冲突


了,使用线性探测法,计算出地址为4

38%11 = 5,没有冲突

33 % 11 = 0,没有冲突

27 % 11 = 5,冲突,计算出地址为:6

22 % 11 = 0,冲突,计算出地址为:7

0 1 2 3 4 5 6 7 8 9 10
33 1 13 12 34 38 27 7

对于查找成功,只需要分别计算单个数据查找成功的次数,因为只有8个数据,所以需要计算8次:


1

因为没有冲突,只需要查找1次即可

13 没有冲突,只需要查找1次

12 冲突了,原本应该放在下标1的位置,现在放在了下标3的位置,需要查找下标1,2,3,共需要3次

34 冲突,原本放在下标1的位置,现在放在下标4的位置,需查找 4 次

38 没有冲突,查找1次

33 没有冲突,查找1次

27 冲突,原本应该放在下标5的位置,现在放在下标6的位置,需查找2次

22 冲突,原本应该放在下标0的位置,现在放在下标7的位置,需查找8次

ASL = (1+1+3+4+1+1+2+8)/8 = 21/8 = 2.625

查找失败:

对于查找失败,概率都是1/11,因此,0-10每个下标都需要计算,共计算11次,并且查找失败的时候,需要一直查找到第一个为





的地址才结束

key = 0,查找失败需要一直查找到 下标为 8 ,因为下标为8的地址为空,共需要9次

key = 1,查找失败需要8次

key = 2,查找失败需要7次

key = 3 ,查找失败需要6次

key = 4,查找失败需要5次

key = 5,查找失败需要4次

key = 6,查找失败需要3次

key = 7,失败需要2次

key = 8,失败需要1次

key = 9,失败需要1次

key = 10,失败需要1次

ASL = (9+8+7+6+5+4+3+2+1+1+1)/11 = 47/11



版权声明:本文为qq_38937658原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。