c++用vector写二分查找
时间: 2024-12-04 12:24:24 浏览: 10
在C++中,你可以使用`std::vector`来实现二分查找(Binary Search),因为`vector`是一个动态数组,支持随机访问,这正是二分查找的前提。下面是一个简单的二分查找算法的例子:
```cpp
#include <iostream>
#include <vector>
int binarySearch(const std::vector<int>& nums, int target) {
int left = 0;
int 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;
}
}
// 没有找到目标值,返回-1
return -1;
}
int main() {
std::vector<int> vec = {1, 3, 5, 7, 9};
int target = 5;
int result = binarySearch(vec, target);
if (result != -1) {
std::cout << "Element found at index: " << result << std::endl;
} else {
std::cout << "Element not found" << std::endl;
}
return 0;
}
```
在这个例子中,`binarySearch`函数接受一个已排序的整数向量`nums`和一个目标值`target`。它通过不断地将搜索范围缩小到中间部分来查找目标值。如果找到,返回其索引;如果没有找到,返回-1。
阅读全文