内容正文:
5.4数据查找(分层作业)
【夯实基础】
1. 数据查找的基本目的是什么?( )
A. 改变数据的存储位置
B. 识别数据的类型
C. 确定数据在数据集中的位置
D. 删除数据集中的数据
2 . 小明和小华玩猜数字的游戏,所猜数字不超过800,小明首先猜400,小华说大了,小明又猜200,当小华再次说大了,小明猜100,当小华说小了,小明猜150,以此类推,直到猜到正确的数字。上述方法中蕴含的算法思想是( )
A.穷举算法 B.递归算法 C.二分查找法 D.顺序查找法
3. 顺序查找的时间复杂度是多少?( )
A. O(1)
B. O(log n)
C. O(n)
D. O(n log n)
4. 二分查找的前提条件是什么?( )
A. 数据必须是无序的
B. 数据必须是有序的
C. 数据可以是任何形式
D. 数据中不能有重复元素
5. 在一个有1000个元素的有序数组中,用二分查找算法查找一个元素,最坏情况下需要比较多少次?( )
A. 10
B. 11
C. 500
D. 1000
6. 顺序查找和二分查找在处理大数据集时,哪个通常更高效?( )
A. 顺序查找
B. 二分查找
C. 两者效率相同
D. 无法确定
7. 下列哪个算法是基于分治策略的查找算法?( )
A. 顺序查找
B. 二分查找
C. 冒泡排序
D. 插入排序
8. 顺序查找算法从数组的哪个位置开始?( )
A. 任意位置
B. 中间位置
C. 开始位置
D. 结束位置
【巩固提升】
9. 二分查找算法每次比较后,查找区间是如何变化的?( )
A. 变为原来的一半
B. 增加一倍
C. 不变
D. 随机变化
10. 二叉排序树的特性是什么?( )
A. 左子树上所有节点的值均小于它的根节点的值
B. 右子树上所有节点的值均大于它的根节点的值
C. 左子树和右子树也分别是二叉排序树
D. 以上都是
11. 顺序查找和二分查找的最坏情况时间复杂度相比,哪个更高?( )
A. 顺序查找
B. 二分查找
C. 相同
D. 无法比较
12. 哪种数据结构最适合用来实现二分查找?( )
A. 数组
B. 链表
C. 栈
D. 队列
13. 在二叉排序树中,对于一个节点来说,其左子树中所有节点的值与该节点的关系是?( )
A. 大于
B. 小于
C. 等于
D. 无特定关系
【拓展应用】
14. 如下Python程序段:
import random
a=[1,3,5,7,9,11,13,15]
key=random.randint(1,8)*2
i,j=0,len(a)-1
s=0
while i<=j:
m=(i+j+1)//2
if a[m]==key:
break
if a[m]>key:
j=m-1;s-=1
else:
i=m+1;s+=1
print(s)
上述程序执行完以后,s的值有几种可能( )
A.4种 B.5种 C.7种 D.8种
15. 查找算法中,哪种算法在有序数组中查找效率最高?
A. 顺序查找
B. 二分查找
C. 随机查找
D. 插值查找
参考答案:
【夯实基础】
1. C 解析:数据查找的目标通常是定位特定数据在数据集中的确切位置,以便获取、更新或确认数据的存在。
2. C 解析:小明每次根据提示将搜索范围减半,这是典型的二分查找策略,每次都缩小一半的查找区间。
3. C 解析:顺序查找需要遍历整个数据集,直到找到目标元素或遍历完所有元素,因此时间复杂度与数据集大小成线性关系。
4. B 解析:二分查找要求数据集合是有序的,这样才能根据中间元素来确定下一步查找的方向,从而减少查找范围。
5. B 解析:二分查找每次都将查找区间减半,最坏情况下需要比较的次数是对数级别,对于1000个元素,大约需要log2(1000) ≈ 10次,但因为可能存在边界情况,需要向上取整,所以是11次。
6. B 解析:二分查找在有序数据集中具有更高的效率,时间复杂度为O(log n),而顺序查找是O(n),所以在处理大数据集时二分查找更为高效。
7. B 解析:二分查找将问题分成两个子问题(左右两半),递归解决,体现