写一个c++的二分法查找
时间: 2024-05-15 12:13:28 浏览: 49
以下是C++的二分查找实现:
```cpp
#include <iostream>
using namespace std;
int binarySearch(int arr[], int left, int right, int x) {
while (left <= right) {
int mid = left + (right - left) / 2;
// 如果找到元素,则返回索引
if (arr[mid] == x)
return mid;
// 如果元素比中间值小,则在左侧继续查找
if (arr[mid] > x)
right = mid - 1;
// 如果元素比中间值大,则在右侧继续查找
else
left = mid + 1;
}
// 如果没有找到元素,则返回 -1
return -1;
}
int main() {
int arr[] = { 2, 3, 4, 10, 40 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
(result == -1) ? cout << "元素不在数组中" : cout << "元素在数组中,索引为 " << result;
return 0;
}
```
在上面的示例中,`binarySearch()`函数接收一个整型数组、数组的左右边界和要查找的元素。函数使用 while 循环来查找元素,如果找到元素,则返回其索引,否则返回 -1。在主函数中,我们定义了一个整型数组和要查找的元素,并调用 `binarySearch()`函数来查找元素。
阅读全文