帮我利用c++写一个折半查找算法.
时间: 2024-12-17 12:34:46 浏览: 13
当然可以。折半查找也被称为二分查找,它是一种在有序数组中查找特定元素的高效算法。以下是一个简单的C++实现:
```cpp
#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)
right = mid - 1;
// 否则,在右半部分搜索
else
left = mid + 1;
}
// 如果没找到,返回-1表示目标不在数组中
return -1;
}
int main() {
int arr[] = {2, 5, 8, 12, 16, 23, 38, 56};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 23; // 搜索的目标值
int result = binarySearch(arr, 0, size - 1, target);
if (result != -1)
cout << "Element found at index " << result << endl;
else
cout << "Element not found in the array" << endl;
return 0;
}
```
在这个示例中,`binarySearch` 函数接受一个排序好的整数数组 `arr`、数组的左右边界 `left` 和 `right`,以及目标值 `target`。函数通过不断比较目标值与中间值,逐步缩小搜索范围,直到找到目标值或确定其不存在。
阅读全文