查找技术-----课后习题解析

标签:
杂谈 |
1. 填空题
⑴ 顺序查找技术适合于存储结构为( )的线性表,而折半查找技术适用于存储结构为( )的线性表,并且表中的元素必须是( )。
【解答】顺序存储和链接存储,顺序存储,按关键码有序
⑵ 设有一个已按各元素值排好序的线性表,长度为125,用折半查找与给定值相等的元素,若查找成功,则至少需要比较( )次,至多需比较(
)次。
【解答】1,7
【分析】在折半查找判定树中,查找成功的情况下,和根结点的比较次数最少,为1次,最多不超过判定树的深度。
⑷ 长度为20的有序表采用折半查找,共有( )个元素的查找长度为3。
【解答】4
【分析】在折半查找判定树中,第3层共有4个结点。
⑸ 假定一个数列{25,43,62,31,48,56},采用的散列函数为H(k)=k mod 7,则元素48的同义词是(
)。
【解答】62
【分析】H(48)= H(62)=6
⑹ 在散列技术中,处理冲突的两种主要方法是( )和( )。
【解答】开放定址法,拉链法
⑺ 在各种查找方法中,平均查找长度与结点个数无关的查找方法是( )。
【解答】散列查找
【分析】散列表的平均查找长度是装填因子的函数,而不是记录个数n的函数。
⑻ 与其他方法相比,散列查找法的特点是( )。
【解答】通过关键码计算记录的存储地址,并进行一定的比较
2. 选择题
⑴ 静态查找与动态查找的根本区别在于( )。
A 它们的逻辑结构不一样 B 施加在其上的操作不同
C 所包含的数据元素的类型不一样 D 存储实现不一样
【解答】B
【分析】静态查找不涉及插入和删除操作,而动态查找涉及插入和删除操作。
⑵
有一个按元素值排好序的顺序表(长度大于2),分别用顺序查找和折半查找与给定值相等的元素,比较次数分别是s和b,在查找成功的情况下,s和b的关系是(
);在查找不成功的情况下,s和b的关系是( )。
A s=b B s>b C s 【解答】D,D
【分析】此题没有指明是平均性能。例如,在有序表中查找最大元素,则顺序查找比折半查找快,而平均性能折半查找要优于顺序查找,查找不成功的情况也类似。
⑶ 长度为 12的有序表采用顺序存储结构,采用折半查找技术,在等概率情况下,查找成功时的平均查找长度是(
),查找失败时的平均查找长度是( )。
A 37/12 B 62/13 C 3 9/12 D 49/13
【解答】A,B
【分析】画出长度为12的折半查找判定树,判定树中有12个内结点和13个外结点。
⑹ 散列技术中的冲突指的是( )。
A 两个元素具有相同的序号 B 两个元素的键值不同,而其他属性相同
C 数据元素过多 D 不同键值的元素对应于相同的存储地址
【解答】D
⑺ 设散列表表长m=14,散列函数H(k)=k mod
11。表中已有15、38、61、84四个元素,如果用线性探侧法处理冲突,则元素49的存储地址是( )。
A 8 B 3 C 5 D 9
【解答】A
【分析】元素15、38、61、84分别存储在4、5、6、7单元,而元素49的散列地址为5,发生冲突,向后探测3个单元,其存储地址为8。
⑻ 在采用线性探测法处理冲突所构成的闭散列表上进行查找,可能要探测多个位置,在查
找成功的情况下,所探测的这些位置的键值( )。
A 一定都是同义词 B 一定都不是同义词 C不一定都是同义词 D 都相同
【解答】C
【分析】采用线性探测法处理冲突会产生堆积,即非同义词争夺同一个后继地址。
3. 判断题
⑷ 散列技术的查找效率主要取决于散列函数和处理冲突的方法。
【解答】错。更重要的取决于装填因子,散列表的平均查找长度是装填因子的函数。
⑸ 当装填因子小于1时,向散列表中存储元素时不会引起冲突。
【解答】错。装填因子越小,只能说明发生冲突的可能性越小。
应用题:
8.已知散列函数H(k)=k mod 12,键值序列为(25, 37, 52, 43, 84, 99, 120, 15, 26,
11, 70, 82),采用拉链法处理冲突,试构造开散列表,并计算查找成功的平均查找长度。
【解答】H(25)=1, H(37)=1, H(52)=4, H(43)=7, H(84)=0, H(99)=3,
H(120)=0, H(15)=3, H(26)=2, H(11)=11, H(70)=10, H(82)=10
构造的开散列表如下:
平均查找长度ASL=(8×1+4×2)/12=16/12
算法设计:
⑴ 设计顺序查找算法,将哨兵设在下标高端。
【解答】将哨兵设置在下标高端,表示从数组的低端开始查找,在查找不成功的情况下,算法自动在哨兵处终止。具体算法如下: