二分查找-I_牛客题霸_牛客网 (nowcoder.com)
设置中间值mid
每次判断目标值和中间值的大小
缩短区间 直到区间全被搜索完成
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param target int整型
* @return int整型
*/
int search(vector<int>& nums, int target) {
// write code here
int l = 0;
int r = nums.size() - 1;
while (l <= r) {
//每次必须先检测中间的值
int mid = l + (r - l) / 2;
if (target == nums[mid]){
return mid;
}
if (target < nums[mid]) {
r = mid - 1;
}
else l = mid + 1;
}
return -1;
}
};
- 时间复杂度:O(log2n)对长度为n的数组进行二分,最坏情况就是取2的对数
- 空间复杂度:O(1)常数级变量,无额外辅助空间