给我用写一段二分查找法c++
时间: 2023-07-04 15:14:39 浏览: 83
当然可以,以下是二分查找法的C++代码:
```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) / 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 = 7;
int result = binarySearch(nums, target);
if (result == -1) {
cout << "Target not found." << endl;
} else {
cout << "Target found at index " << result << "." << endl;
}
return 0;
}
```
在这个示例中,我们定义了一个`binarySearch`函数,它接受一个整数向量和一个目标值作为参数。该函数返回目标值在向量中的索引,如果目标值未找到,则返回-1。
在函数中,我们使用两个指针`left`和`right`来定义二分查找的搜索范围。在每一次迭代中,我们计算中间值`mid`,并将其与目标值进行比较。如果`nums[mid]`等于目标值,则返回中间值的索引。如果`nums[mid]`小于目标值,则将搜索范围缩小到右侧。如果`nums[mid]`大于目标值,则将搜索范围缩小到左侧。最后,如果没有找到目标值,则返回-1。
在`main`函数中,我们定义了一个示例向量`nums`和一个目标值`target`。我们调用`binarySearch`函数来查找目标值在向量中的索引,并输出结果。
阅读全文