散列查找(重点讲解查找失败的ASL) 习题集

更新日期:2021年10月10日

写在前边的话:你的支持是我写作的动力,有帮助到你的话麻烦点赞收藏呦。感激不尽!如有错误也请留言指正。

考研数据结构练习,欢迎订阅我的专辑《考研数据结构题型分类讲解练习》

目录

一、 线性探测

接下来重点讲解查找失败的ASL

二、二次探测再散列

三、线性探测再散列


一、 线性探测

本文以例题形式讲解散列查找中,散列表的构建,以及查找成功的ASL和失败的ASL。重点讲解求解失败的ASL的过程,巨详细(后边还有其他例题)

【2010年全国试题41(10分)】将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组,散列函数为: H(key) = (keyx3) MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7。

(1) 请画出所构造的散列表。

(2) 分别计算等概率情况下查找成功和查找不成功的平均查找长度。

表1-1
key78301118914
H(key)0365560
实际散列位置0365781
查找成功需要探测次数1111332

(1)装填因子\alpha =count(key)/n=0.7, 所以 n = 10

表 1-2
0123456789
71481130189

(2)根据表1-1中 查找查找成功需要探测次数,ASL_{success} = (1+1+1+1+3+3+2)/7=\frac{12}{7}

接下来重点讲解查找失败的ASL

求解查找失败的ASL需要计算出每个散列位置(即每个模对应的值)查找失败所需要的的次数,本题散列函数模的是7,所以只需要计算模为0,1,2,3,4,5,6的关键字查找失败所需要的次数。查找到空说明查找失败,查找示意图如下

  • 查找模为0的关键字,失败时比较的次数为3


  • 查找模为1的关键字,失败时比较次数为2  


  •  查找模为2的关键字,失败时比较次数为1


  • 查找模为3的关键字,失败时比较次数为2  


  •  查找模为4的关键字,失败时比较次数为1


  •  查找模为5的关键字,失败时比较次数为5


  •  查找模为6的关键字,失败时比较次数为4


 将上述过程整理成表格如下

表1-3
0123456789
71781130189
各个模查找失败需要比较的次数321215

查找失败的平均比较次数为:ASL_{failer} = (3+2+1+2+1+5+4)/7=\frac{18}{7}


二、二次探测再散列

2.【东北大学2002 二、2 (5分)】设有一组关键字(9, 01,23, 14, 55, 20, 84,27),采用哈希函数: H(key)=key mod 7,表长为10,用开放地址法的二次探测再散列方法

Hi = ( H(key) + di ) mod 10 (di=1^2, 2^2, 3^2, ...)解决冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。

表2-1
901231455208427
H(key)=key mod 72120

6

606
第一次冲突+13717
第二次冲突+440
第三次冲突+95
实际位置21306745
查找需要次数11211234
表2-2 哈希表
0123456789
14192384275520

查找成功所需的ASL=(1+1+2+1+1+2+3+4)/8=\frac{15}{8}


3.设散列表的表长m=15,散列函数H(key)=key mod 13,关键码集合为(53, 17,12, 61, 89, 70, 87, 25, 64, 46),采用二次探测法处理冲突,试构造闭散列表,并计算查找成功的平均查找长度。

表3-1
key53171261897087256446
H(key)14129115912127
第一次冲突应散列的位置   +1101313
第二次冲突应散列的位置   -111
第三次冲突应散列的位置   +41
第四次冲突应散列的位置   -48
实际散列位置14129115101387
查找成功比较次数1111112251
表3-2哈希表
01234567891011121314
53177046646187891225

查找成功的A S L=1+1+1+1+1+1+2+2+5+1=\frac{16}{10}=1.6


三、线性探测再散列

4【东北大学2001六(18分)】对下面的关键字集(30, 15, 21, 40, 25,26, 36, 37),若查找表的装填因子为0.8,采用线性探测再散列方法解决冲突。

(1)设计哈希函数;
(2)画出哈希表;
(3)计算查找成功和查找失败的平均查找长度;

(1) Hey(key) = key % 7;

(2)

表4-1
key3015214025263637
Hey(key)21054512
实际散列位置21054637
查找成功所需次数11111236
表4-2 哈希表
0123456789
2115303625402637

(3)查找成功的平均查找长度ASL_{succ}=(1+1+1+1+1+2+3+6)/8=2

表4-3
0123456789
2115303625402637
查找失败需要比较的次数9876543

 查找失败的平均查找长度ASL_{failer}=(9+8+7+6+5+4+3)/7=6


3【北京工业大学2000三(8分)1 【烟台大学2007四、4 (10分)】采用哈希函数H(k)-3*k mod 13并用线性探测开放地址法处理冲突,在散列地址空间[0..12]中对关键字序列22, 41, 53, 46, 30, 13, 1, 67,51。

(1)构造哈希表(画示意图);

(2)装填因子;

等概率下(3)成功的和(4)不成功的平均查找长度。

  • 65
    点赞
  • 240
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eva_5433

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值