coding A&D:计算哈希表

您所在的位置:网站首页 泄水试验的方法有排烟法和探测法 coding A&D:计算哈希表

coding A&D:计算哈希表

2024-07-12 16:29| 来源: 网络整理| 查看: 265

例题(来源:2010年全国统考专业课408 第一题)

一. 哈希表—线性探测法的ASL成功、不成功计算 将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组。散列函数为: H(key) = (keyx3) MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7。 (1) 请画出所构造的散列表; (2) 分别计算等概率情况下查找成功和查找不成功的平均查找长度。

【分析】

第一步:求散列表

由α = 表中填入的记录数/哈希表长度,可得:哈希表长度 = 7/0.7 = 10

 H(7) = (7x3) MOD 7 = 0          

H(8) = (8x3) MOD 7 = 3          

H(30) = (30x3) MOD 7 = 6

H(11) = (11x3) MOD 7 = 5      

H(18) = (18x3) MOD 7 = 5      

H(9) = (9x3) MOD 7 = 6           

H(14) = (14x3) MOD 7 = 0

按关键字序列顺序依次向哈希表中填入,发生冲突后按照“线性探测”探测到第一个空位置填入:

0123456789714 8 1130189 

第二步:计算ASL成功、ASL不成功

「ASl查找成功」(待查找的数字肯定在散列表中才会查找成功)

查找数字A的长度 = 需要和散列表中的数比较的次数; 步骤:                 比如 查找数字:8                 则  H(8) = (8x3) MOD 7 = 3                 哈希表中地址3处的数字为8,进行了第一次比较:8 = 8,则查找成功,查找长度为1;                 比如查找数字:14                 则 H(14) = (14x3) MOD 7 = 0                 哈希表中地址0处的数字为7,进行第一次比较:7≠14                 哈希表中地址1处的数字为14,进行第二次比较:14=14 ,则查找成功,查找长度为2。                             

由此可得到如下数据:

0123456789714 8 1130189 12 1 1133 

由上表可得:

ASL成功 = (1+1+1+1+3+3+2)/7 = 12/7

「ASL查找不成功」(待查找的数字肯定不在散列表中)

 

【解题的关键之处】根据哈希函数地址为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(比较到地址6,再循环回去)需要比较5次,因此查找不成功的次数为5地址6,到第一个关键字为空的地址2(比较到地址6,再循环回去)需要比较4次,因此查找不成功的次数为4

由上表得到如下数据:

0123456789714 8 1130189 3212154   

由上表得:

ASL不成功 = (3+2+1+2+1+5+4)/7 = 18/7

二. 哈希表-拉链法ASL成功、不成功计算

例题:

假设散列表的长度是13,三列函数为H(K) = k % 13,给定的关键字序列为{32, 14, 23, 01, 42, 20, 45, 27, 55, 24, 10, 53}。分别画出用线性探测法和拉链法解决冲突时构造的哈希表,并求出在等概率情况下,这两种方法的查找成功和查找不成功的平均查找长度。

【分析】

先利用散列函数(一般是取余数的方法)定位数组具体哪个点,比如1就是余数为1的点的链表中,然后再遍历链表查找具体数值的位置,如,果是53,那就在链表的第四位置,需要查找四次;同理,27就需要查找3次!

技术分享

查找成功时的平均查找长度:

ASL = (1*6+2*4+3*1+4*1)/12 = 7/4

查找不成功时的平均查找长度:

ASL = (4+2+2+1+2+1)/13

注意:查找成功时,分母为哈希表元素个数,查找不成功时,分母为哈希表长度。

 

 

其他练习题:

https://blog.csdn.net/longlovefilm/article/details/78009782

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3