牛客网专项练习(九)

本文介绍了二分查找的基本概念、时间复杂度分析,并通过实例展示了有序数组中查找特定元素的二分查找序列。同时,提及了二分查找在解决散列表冲突、查找表中的应用及其优缺点,以及在图的BFS生成树与DFS生成树高度比较中的作用。此外,还讨论了错误的二分查找实现可能导致的无限循环问题,并提供了正确实现的二分查找代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、二分查找的时间复杂度( )

正确答案: C 

O(N*log(N))
O(N)
O(log(N))
O(N^2)

分析:

因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:
一次二分剩下:n/2
两次二分剩下:n/2/2 = n/4
。。。
m次二分剩下:n/(2^m)
在最坏情况下是在排除到只剩下最后一个值之后得到结果,所以为
n/(2^m)=1;
2^m=n;
所以时间复杂度为:log2(n)


2、有序数组1 2 3 4 5 6 7 8 9查找3的二分查找序列是:

正确答案: B   

1->2->3
5->2->3
9->5->3
5->1->4->3

分析:

二分查找法:middle =(right +left )/2,当>middle 时,left =middle +1;反之,right =middle -1.

索引:0 1 2 3 4 5 6 7 8 

值:   1 2 3 4 5 6 7 8 9

第一步:left = 0;right = 8;middle = (0+8)/2=4;为5

第二步:left = 0;right = 3;middle = (0+3)/2=1;为2

第三步:left = 2;right = 3;middle = (2+3)/2=2;为3

停止


3、设散列表的长度为10,散列函数H(n)=n mod 7,初始关键字序列为 (33,24,8,17,21,10),用链地址法作为解决冲突的方法,平均查找长度是

正确答案: B   

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值