vector数组 二分查找
时间: 2023-09-29 09:04:18 浏览: 111
LeetCode 1300. 转变数组后最接近目标值的数组和(二分查找)
二分查找是一种常用的查找算法,可以在有序的数组中快速定位目标值。对于一个有序的数组,我们可以使用二分查找来找到目标值的位置。
具体的二分查找算法如下:
1. 确定搜索范围,首先将整个数组作为搜索范围。使用两个指针 `left` 和 `right` 分别指向搜索范围的起始位置和结束位置。
2. 计算中间位置 `mid`,`mid = (left + right) / 2`。
3. 比较中间位置的元素与目标值的大小。如果中间位置的元素等于目标值,则直接返回中间位置。
4. 如果中间位置的元素大于目标值,则说明目标值应该位于左半部分。更新搜索范围为左半部分,即 `right = mid - 1`。
5. 如果中间位置的元素小于目标值,则说明目标值应该位于右半部分。更新搜索范围为右半部分,即 `left = mid + 1`。
6. 重复步骤 2 到步骤 5,直到找到目标值或者搜索范围为空。
以下是使用二分查找在一个有序的整数数组中查找目标值的示例代码(C++语言):
```cpp
int binarySearch(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; // 目标值在左半部分
}
}
return -1; // 搜索范围为空,未找到目标值
}
```
请注意,以上代码假设输入的 `nums` 数组是有序的。如果数组无序,需要先进行排序再使用二分查找算法。
希望以上内容能够帮助到你!如有更多问题,请继续提问。
阅读全文