用C++实现双指针
时间: 2023-07-11 12:23:43 浏览: 48
以下是一个简单的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, 4, 5, 7, 8, 9};
int target = 5;
int index = binarySearch(nums, target);
if (index != -1) {
cout << "Target found at index " << index << endl;
} else {
cout << "Target not found" << endl;
}
return 0;
}
```
在上面的代码中,我们用left和right表示数组的左右两端,然后在while循环中使用mid来表示数组的中间位置。在每一次循环中,我们都将目标值与mid所在位置的元素进行比较,如果相等就直接返回mid的值,否则根据目标值与mid的大小关系来移动left和right指针,逐渐缩小查找范围,直到找到目标值或者left>right为止。