对于一个包含1000个元素的有序数组,采用二分查找算法。在最坏情况下,需要查找的次数是:
答案解析
核心考点说明:二分查找算法的时间复杂度,最坏情况下的查找次数。解题思路分析:二分查找每次查找都会将搜索空间减半,最坏情况是查找的元素不在数组中或者在数组的边缘,直到搜索空间缩小为1时结束。因此,查找次数取决于可以将原始数组对分多少次才能缩小到1个元素。假设查找次数为k,则有 2^k >= 1000 。每个选项的详细分析:A选项错误:2^10 = 1024,看起来满足条件,但是计算二分查找的次数时需要取log2并向上取整。B选项正确:2^10 = 1024,10次可以覆盖,因此最坏情况下我们需要查找10次,但是10次并不一定可以找到,可能最后一次查找的元素不满足,还需要查找最后一次,所以需要11次。所以取log2(1000),大约为9.96,向上取整得到10。由于最坏情况下,可能查找的元素并不在数组中,所以会继续查找最后一次,或者说查找范围的最后一个元素。因此总共需要查找10+1 = 11次。C选项错误:这是线性查找的复杂度,不是二分查找。D选项错误:这指的是遍历全部元素的复杂度,不是二分查找。易错点提醒:二分查找的最坏情况需要考虑最后一次查找,可能存在向上取整。正确答案的关键依据:二分查找的查找次数等于对元素数量取以2为底的对数,再向上取整,同时需要考虑最后一次查询情况。
正确答案:B