写一个c++的二分法查找
时间: 2024-05-13 20:18:12 浏览: 98
下面是一个简单的 C++ 代码实现二分法查找:
```C++
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int target) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int index = binarySearch(arr, n, target);
if (index != -1) {
cout << "Target found at index: " << index << endl;
} else {
cout << "Target not found" << endl;
}
return 0;
}
```
在这个例子中,我们定义了一个 `binarySearch` 函数来执行二分搜索。函数接受三个参数:一个整数数组 `arr`,数组的大小 `n` 和要搜索的目标值 `target`。函数返回目标值在数组中的索引,如果目标值不存在,则返回 -1。
在二分搜索中,我们首先定义左右指针并将它们初始化为数组的第一个和最后一个元素的索引。然后,我们从数组的中间开始搜索,将中间元素与目标值进行比较。如果中间元素等于目标值,则返回该元素的索引。如果中间元素大于目标值,则我们在左半部分继续搜索。否则,我们在右半部分继续搜索。
我们不断重复这个过程,直到找到目标值或者确定它不存在为止。
阅读全文