帮我写一个c++的二分法
时间: 2024-05-14 22:18:28 浏览: 92
当然可以,下面是一个基本的二分搜索算法的C++代码:
```c++
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int target) {
int left = 0, 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; // 如果找不到目标元素,则返回-1
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
int result = binarySearch(arr, n, target);
if (result == -1) {
cout << "元素不存在!" << endl;
}
else {
cout << "元素在数组中的位置为:" << result << endl;
}
return 0;
}
```
其中,`binarySearch` 函数接受三个参数:目标数组 `arr`、数组大小 `n` 和要查找的目标元素 `target`,并返回目标元素在数组中的下标。如果目标元素不存在于数组中,则返回 -1。
在 `main` 函数中,我们定义了一个有序数组 `arr`,并使用 `binarySearch` 函数查找目标元素 5 在数组中的位置。如果找到目标元素,则输出其在数组中的下标;否则输出“元素不存在!”。
阅读全文