用C++实现二分查找:二分查找接受一个有序数组和要查找的元素。如果指定元素包含在数组中,最终将返回其位置。
时间: 2024-09-12 12:09:08 浏览: 69
在C++中,二分查找(Binary Search),也称为折半查找,是一种高效的搜索算法,适用于已排序的数组。以下是基本的二分查找实现步骤:
```cpp
#include <iostream>
using namespace std;
// 返回值:如果找到目标值,返回其索引;否则返回 -1
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;
}
}
// 没有找到目标值,返回 -1
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9}; // 示例数组
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5; // 要查找的目标元素
int result = binarySearch(arr, 0, n - 1, target);
if (result != -1) {
cout << "元素 " << target << " 在数组中的位置是 " << result << endl;
} else {
cout << "元素 " << target << " 未在数组中找到" << endl;
}
return 0;
}
```
在这个例子中,`binarySearch` 函数接收一个排序好的整数数组 `arr`,开始和结束的索引范围 `left` 和 `right`,以及要查找的目标元素 `target`。函数通过不断缩小搜索范围直到找到目标或搜索区间为空来实现查找。
阅读全文