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