不使用lower_bound和upper_bound的话 怎么实现
时间: 2023-12-31 20:23:13 浏览: 77
lower-bound函数解释及常用场景.txt
不使用lower_bound和upper_bound实现二分查找的方法如下:
```c++
#include <iostream>
#include <vector>
using namespace std;
int binarySearch(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
vector<int> nums = {1, 3, 5, 7, 9};
int target = 5;
int index = binarySearch(nums, target);
if (index != -1) {
cout << "The index of " << target << " is " << index << endl;
} else {
cout << "The target is not found." << endl;
}
return 0;
}
```
上述代码中,我们使用了一个while循环来实现二分查找。在每次循环中,我们计算出中间元素的下标mid,然后将目标值与中间元素进行比较。如果目标值等于中间元素,则返回中间元素的下标;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。如果最终没有找到目标值,则返回-1。
阅读全文