给定一个有序数组,该数组可能包含重复元素,现在需要找到第一个大于等于给定目标值的元素的索引,在考虑时间和空间复杂度的情况下,下列哪种方法最为高效?
答案解析
A选项错误,线性搜索时间复杂度为O(n),效率较低;B选项错误,如果找到目标值,继续向左查找,虽然可以找到第一个大于等于目标值的元素,但当大量目标值重复时,会增加无谓的查找次数;C选项错误,即使找到目标值,也不一定是第一个大于等于目标值的元素,可能左边还有重复的该值;D选项正确,二分查找可以在O(logn)时间复杂度内找到第一个大于等于目标值的元素,通过不断更新右边界,当mid位置的元素小于target值时,left = mid+1,否则right=mid,最终当left和right相等时,找到的就是第一个大于等于目标值的元素。
正确答案:D