那你用c++实现一下二分法
时间: 2023-07-28 19:06:35 浏览: 48
好的,以下是用 C++ 实现的二分法:
```c++
#include <iostream>
using namespace std;
int binarySearch(int arr[], int left, int right, int target) {
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, 2, 3, 4, 5, 6, 7, 8, 9};
int target = 5;
int n = sizeof(arr) / sizeof(arr[0]);
int result = binarySearch(arr, 0, n - 1, target);
if (result == -1) {
cout << "Element not present in array" << endl;
} else {
cout << "Element found at index " << result << endl;
}
return 0;
}
```
在这个示例中,我们定义了一个名为 `binarySearch` 的函数,它接受一个整数数组、左右边界和目标值,并返回目标值在数组中的索引。我们使用 while 循环来查找目标值,如果中间元素等于目标值,则返回中间元素的索引。如果中间元素小于目标值,则将左边界移动到中间元素的右侧,并重新执行循环。如果中间元素大于目标值,则将右边界移动到中间元素的左侧,并重新执行循环。 如果未找到目标值,则返回 -1。
在主函数中,我们定义了一个整数数组 `arr`,并在其中查找元素 5。我们计算数组的长度,并使用函数 `binarySearch` 查找元素 5。如果未找到元素,则输出“Element not present in array”,否则输出“Element found at index”和元素的索引。