【数据结构】考点十七: 散列表(线性探查算法 + 二次探测法)

【考试临时抱佛脚】系列文章针对于<学习时间少>、<时间紧迫>、<想短时间提升成绩>的考生打造。无论你是<自考>、<专升本>还是<考研>这个专栏都适合你,Let’s go!

一、方法

解题步骤

① 线性探查算法: 探测的下标序列依次后移一位,发现空闲就填入
② 二次探测算法: 探测的下标序列是:hash(key)+0, hash(key) + 1^2,hash(key) + 2^2…
③ 特别注意: 散列表是从0开始的

二、考察形式1

1、问题

设散列表长m = 14 , 散列函数 H(key) = key%13。采用线性探测法处理冲突,表中已按散列地址保存了3个关键字16、30、18,此时存储关键字29的探查次数是( )
A. 1
B. 2
C. 3
D. 4

2、解析&回答

解析:
① 计算散列值: 3个关键字的散列值:H(16) = 3, H(30) = 4 , H(18) = 5
② 关键字29的散列值: H(29) = 3
在这里插入图片描述
答案:D

三、考察形式2

1、问题

散列表的平均查找长度不是结点个数n的函数,而是 () 的函数。

2、解析&回答

解析:
记忆题,记住就好~

答案:装填因子

四、考察形式3

1、问题

散列表的存储中,拉链法(链地址法)是处理 () 的方法。

2、解析&回答

解析:
记忆题,记住就好~

答案: 冲突

五、考察形式4

1、问题

设散列表长m=10,散列函数 H(key) = key%9。表中已保存3个关键字:H(13)=4, H(32)=5, H(15)=6,其余地址均为空。
保存关键字23时存在冲突,采用线性探查法来处理。则查找关键23时的探查次数是 ( )
A. 1
B. 2
C. 3
D. 4

2、解析&回答

解析:
① 关键23的散列哈希值:H(23) = 5
② 查找关键23时:第一次找到H(32)=5 占用了,向后找到
③ H(15)=6 也占用了,再向后未占用
④ 所以探查次数是3次
答案:C

五、考察形式4

1、问题

设有关键字16、15、32、11、6、30,将它他依次保存在哈希表(长度为7的一维数组)中,哈希函数为H(k) = k mod 7,采用线性探查法解决冲突。已知关键字16已放置在数组下标为2的位置。请画出哈希表。

2、解析&回答

解析:
① 已知:关键字16、15、32、11、6、30
② 长度为7的一维数组:那就是0-6
③ 哈希函数为H(k) = k mod 7
④ 已知关键字16已放置在数组下标为2的位置

答案:
在这里插入图片描述

六、考察形式6

1、问题

设有散列表函数为:H(key) =key MOD 11,散列表长度为11,解决冲突的方法为线性探测法,关键字的输入序列为(18,34,58,26,75,67,48,93,81)
试构建此散列表,并求出在等概率情况下查找成功和不成功时的平将查找长度。

2、解析&回答

解析:
① 计算散列函数值:
H(18) = 18 MOD 11 = 7
H(34) = 34 MOD 11 = 1
H(58) = 58 MOD 11 = 3
H(26) = 26 MOD 11 = 4
H(75) = 75 MOD 11 = 9
H(67) = 67 MOD 11 = 1
H(48) = 48 MOD 11 = 4
H(93) = 93 MOD 11 = 5
H(81) = 81 MOD 11 = 4
② 查找成功和不成功时的平将查找长度公式:
ASL(成功)= 关键字比较次数相加 / 关键字个数
ASL(失败)= 空单元格数量 + 每个关键字到第一个空格处的间格数量含本身 / 散列表总长度
答案:
在这里插入图片描述
ASL(成功)= (1+2+1 +1+2+2+1+5+1)/ 9 = 16/9
ASL(失败)= (2+10+9+8+7+6+5+4+3+2) /11 = 56/11

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值