《数据结构》_PTA_数据结构作业7:查找

本文深入探讨了散列表的基本概念,包括同义词的定义、散列函数的选择以及冲突解决方法,如线性探测和平方探测。我们分析了不同冲突解决策略对查找效率的影响,同时讨论了装填因子、平均查找长度等关键指标。此外,还涉及了哈希表在实际应用中的性能优化和查找效率对比。
摘要由CSDN通过智能技术生成

判断题

1-1
在散列表中,所谓同义词就是具有相同散列地址的两个元素
T

1-2
在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个元素。
F

1-3
若用平方探测法解决冲突,则插入新元素时,若散列表容量为质数,插入就一定可以成功。
F

1-4
将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为M/S。
T

1-5
在散列中,函数“插入”和“查找”具有同样的时间复杂度。
T

1-6
即使把2个元素散列到有100个单元的表中,仍然有可能发生冲突。
T

1-7
在检索一个单词时,用哈希算法比用搜索树要快。
T

1-8
将 10 个元素散列到 100000 个单元的哈希表中,一定不会产生冲突。
F

1-9
采用平方探测冲突解决策略(hi(k)=(H(k)+i2)%11, 注意:不是±i2),将一批散列值均等于2的对象连续插入一个大小为11的散列表中,那么第4个对象一定位于下标为0的位置。
T

选择题

2-1
在散列表中,所谓同义词就是:(具有相同散列地址的两个元素)

2-2
在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:(利用哈希(散列)表)

2-3
对包含N个元素的散列表进行查找,平均查找长度为:(不确定)

2-4
将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为:(M/S)

2-5
散列冲突可以被描述为:(两个有不同键值的元素具有相同的散列地址

2-6
将10个元素散列到100000个单元的哈希表中,是否一定产生冲突?可能会

2-7
设散列表的地址区间为[0,16],散列函数为H(Key)=Key%17。采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。元素59存放在散列表中的地址是:11

2-8
假定有K个关键字互为同义词,若用线性探测法把这K个关键字存入散列表中,至少要进行多少次探测?K(K+1)/2

2-9
采用线性探测法解决冲突时所产生的一系列后继散列地址:(可以大于或小于但不等于原散列地址)

2-10
将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?(0.45)

2-11
给定散列表大小为11,散列函数为H(Key)=Key%11。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%11将关键字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是:(5)

2-12
给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的4个元素。问:此时该散列表的平均不成功查找次数是多少?( 21/11

2-13
从一个具有N个结点的单链表中查找其值等于X的结点时,在查找成功的情况下,需平均比较多少个结点?(N+1)/2

2-14
若用平方探测法解决冲突,则插入新元素时,以下陈述正确的是:(插入不一定能成功)

2-15
给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用分离链接法解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)
1, 3, 3, 9, 4, 9, 9

2-16
给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用开放定址法以及一个二次散列函数h2(X)=7−(X%7)解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)
1, 3, 4, 9, 7, 5, -1

2-17
若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:
N(N+1)/2

2-18
若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:N(N+1)/2

2-19
若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:N(N+1)/2

2-20
给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%17将关键字序列{ 6, 22, 7, 26, 9, 23 }依次插入到散列表中。那么元素23存放在散列表中的位置是:2

2-21
给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%17将关键字序列{ 23, 22, 7, 26, 9, 6 }依次插入到散列表中。那么元素6存放在散列表中的位置是:2

2-22
将元素序列{18, 23, 4, 26, 31, 33, 17, 39}按顺序插入一个初始为空的、大小为13的散列表中。散列函数为:H(Key)=Key%13,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?
0.31

2-23
给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的5个元素。问:此时该散列表的平均不成功查找次数是多少?26/11

2-24
现有长度为 7、初始为空的散列表HT,散列函数H(k)=k%7,用线性探测再散列法解决冲突。将关键字 22, 43, 15 依次插入到HT后,查找成功的平均查找长度是:2

2-25
现有长度为 11 且初始为空的散列表 HT,散列函数是 H(key)=key%7,采用线性探查(线性探测再散列)法解决冲突。将关键字序列 87,40,30,6,11,22,98,20 依次插入到 HT 后,HT 查找失败的平均查找长度是:6

2-26
设有一组关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },散列函数为 H(key)=key%17,采用线性探测方法解决冲突。试在 0 到 18 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 1.33

2-27
设有一组关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },散列函数为 H(key)=key%17,采用平方探测方法解决冲突。试在 0 到 18 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 1.25

2-28
设有一组关键字 { 92,81, 58,21,57,45,161,38,117 },散列函数为 h(key)=key%13,采用下列双散列探测方法解决第 i 次冲突:h(key)=(h(key)+i×h2(key))%13,其中 h2(key)=(key%11)+1。试在 0 到 12 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 1.67

2-29
已知线性表的关键字集合 { 21,11, 13,25,48,6,39,83,30,96,108 },散列函数为 h(key)=key%11,采用分离链接法解决冲突。则成功查找的平均查找长度为 1.36

2-30
将关键字序列 { 7,8,30,11,18,9,14 },散列存储到散列列表中,散列表的存储空间是一个下标从 0 开始的一维数组。处理冲突采用线性探测法。散列函数为 h(key)=(key×3)% 表长,要求装入因子为 0.7。则成功查找的平均查找长度为 1.14

2-31
已知一个长度为16的顺序表L,其元素按关键字有序排列。若采用二分查找法查找一个L中不存在的元素,则关键字的比较次数最多是:5

2-32
用二分查找从100个有序整数中查找某数,最坏情况下需要比较的次数是:7

2-33
在有n(n>1000)个元素的升序数组A中查找关键字x。查找算法的伪代码如下所示:
在这里插入图片描述

本算法与二分查找(折半查找)算法相比,有可能具有更少比较次数的情形是:当x接近数组开头处

2-34
下列二叉树中,可能成为折半查找判定树(不含外部结点)的是:
在这里插入图片描述

2-35
对一个长度为 10 的排好序的表用二分法查找,若查找不成功,至少需要比较的次数是(3)。

填空题
3-1
在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为 4

3-2
哈希表是通过将查找码按选定的哈希函数解决冲突的方法,把结点按查找码转换为地址进行存储的线性表。哈希方法的关键是选择好的哈希函数处理冲突的方法。一个好的哈希函数其转换地址应尽可能均匀,而且函数运算应尽可能简单

3-3
直接定址法法构造的哈希函数肯定不会发生冲突。

3-4
假定查找有序表A[1…12]中每个元素的概率相等,则进行二分查找时的平均查找长度为37/12

3-5
可以唯一的标识一个记录的关键字称为主关键字

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

微__凉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值