数据结构:第七章 查找
- 格式:ppt
- 大小:235.00 KB
- 文档页数:32
《数据结构(C语言版第2版)》(严蔚敏著)第七章练习题答案第7章查找1.选择题(1)对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()。
A.(n-1)/2B.n/2C.(n+1)/2D.n答案:C解释:总查找次数N=1+2+3+…+n=n(n+1)/2,则平均查找长度为N/n=(n+1)/2。
(2)适用于折半查找的表的存储方式及元素排列要求为()。
A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序答案:D解释:折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
(3)如果要求一个线性表既能较快的查找,又能适应动态变化的要求,最好采用()查找法。
A.顺序查找B.折半查找C.分块查找D.哈希查找答案:C解释:分块查找的优点是:在表中插入和删除数据元素时,只要找到该元素对应的块,就可以在该块内进行插入和删除运算。
由于块内是无序的,故插入和删除比较容易,无需进行大量移动。
如果线性表既要快速查找又经常动态变化,则可采用分块查找。
(4)折半查找有序表(4,6,10,12,20,30,50,70,88,100)。
若查找表中元素58,则它将依次与表中()比较大小,查找结果是失败。
A.20,70,30,50B.30,88,70,50C.20,50D.30,88,50答案:A解释:表中共10个元素,第一次取⎣(1+10)/2⎦=5,与第五个元素20比较,58大于20,再取⎣(6+10)/2⎦=8,与第八个元素70比较,依次类推再与30、50比较,最终查找失败。
(5)对22个记录的有序表作折半查找,当查找失败时,至少需要比较()次关键字。
A.3B.4C.5D.6答案:B解释:22个记录的有序表,其折半查找的判定树深度为⎣log222⎦+1=5,且该判定树不是满二叉树,即查找失败时至多比较5次,至少比较4次。
(6)折半搜索与二叉排序树的时间性能()。
数据结构实验七查找在计算机科学中,数据结构是组织和存储数据的方式,而查找则是在给定的数据结构中寻找特定元素的操作。
本次实验七的重点就是深入研究查找这一重要的数据处理操作。
查找操作在我们日常生活和计算机程序中无处不在。
想象一下在电话簿中查找一个朋友的号码,或者在图书馆的书架中寻找一本书,这都是查找的实际应用场景。
在计算机程序中,当我们需要从大量数据中快速找到所需的信息时,高效的查找算法就显得至关重要。
常见的查找算法有顺序查找、二分查找、哈希查找等。
顺序查找是最简单直接的方法,它从数据结构的起始位置开始,依次比较每个元素,直到找到目标元素或者遍历完整个数据结构。
这种方法适用于数据量较小或者数据未排序的情况。
让我们通过一个简单的示例来理解顺序查找。
假设有一个整数数组5, 3, 8, 2, 9,我们要查找数字 8。
从数组的第一个元素 5 开始,依次与8 进行比较。
当比较到第三个元素时,找到了目标数字 8,查找结束。
虽然顺序查找的思路简单,但在数据量较大时,它的效率相对较低。
与顺序查找不同,二分查找则要求数据是有序的。
它通过不断将待查找的区间一分为二,逐步缩小查找范围,从而提高查找效率。
还是以整数数组为例,比如 2, 4, 6, 8, 10 要查找数字 6。
首先,比较中间元素 6 和目标数字 6,正好相等,查找成功。
如果要查找的数字小于中间元素,则在左半区间继续查找;如果大于中间元素,则在右半区间查找。
二分查找的效率在有序数据中表现出色。
然而,如果数据经常变动,需要频繁进行插入和删除操作,维护数据的有序性可能会带来较大的开销。
哈希查找则是另一种常见的查找方法。
它通过一个哈希函数将关键字映射到一个特定的位置,从而实现快速查找。
哈希函数的设计至关重要,如果设计不当,可能会导致大量的冲突,影响查找效率。
在实际应用中,选择合适的查找算法取决于多种因素,如数据的规模、数据的分布特征、查找的频繁程度以及对时间和空间复杂度的要求等。
数据结构第七章-搜索结构数据结构第七章搜索结构在计算机科学中,数据结构是组织和存储数据的方式,以便能够高效地访问和操作这些数据。
搜索结构作为数据结构中的重要组成部分,它的作用在于能够在给定的数据集合中快速准确地找到所需的元素。
搜索,简单来说,就是在一组数据中查找特定的元素。
想象一下,你有一本厚厚的电话簿,要从中找到某个人的电话号码,这就是一个搜索的过程。
在计算机中,数据量可能极其庞大,如何快速有效地完成搜索就显得至关重要。
常见的搜索结构有线性搜索和二分搜索。
线性搜索是最简单直观的搜索方法。
它从数据集合的开头,依次检查每个元素,直到找到目标元素或者检查完整个集合。
就好像你在一个排好队的人群中,从第一个人开始,逐个询问是不是你要找的那个人。
这种方法的优点是简单易懂,容易实现。
但缺点也很明显,当数据量很大时,搜索效率会非常低。
举个例子,如果我们有一个包含 1000 个整数的数组,要查找一个特定的数。
使用线性搜索,最坏的情况是需要检查完这 1000 个数才能确定目标数是否存在。
二分搜索则是一种效率更高的搜索方法,但它要求数据集合是有序的。
它的基本思想是每次将搜索范围缩小一半。
就好比猜数字游戏,你先猜 50,被告知大了,那你就会在 1 到 49 之间猜,再比如猜 25,被告知小了,那就在 26 到 49 之间猜。
通过不断地将范围缩小一半,快速逼近目标。
二分搜索的时间复杂度要远远低于线性搜索。
对于一个包含 n 个元素的有序数组,二分搜索的最坏情况下的时间复杂度为 O(log n),而线性搜索为 O(n)。
这意味着当数据量越大,二分搜索的优势就越明显。
除了上述两种基本的搜索方法,还有一些更复杂的搜索结构,如二叉搜索树、哈希表等。
二叉搜索树是一种特殊的二叉树结构。
对于二叉搜索树中的每个节点,其左子树中的所有节点的值都小于该节点的值,右子树中的所有节点的值都大于该节点的值。
这使得在二叉搜索树中进行搜索、插入和删除操作的平均时间复杂度都为 O(log n)。