二分查找: 设有n个元素的集合a[0]~a[n-1]是有序的,设计算法从这n个元素中找出值为x的特定元素。使用c++写出代码
时间: 2024-10-15 11:07:44 浏览: 39
二分查找,也称折半查找,是一种在有序数组中搜索特定元素的高效算法。它通过反复将数组分成两部分,每次都比较中间元素与目标值,以此缩小搜索范围。如果中间元素正好是我们寻找的,就返回索引;如果目标小于中间元素,则在左半部分继续查找;如果目标大于中间元素,则在右半部分查找。这个过程会一直持续到找到目标或数组为空。
以下是C++实现二分查找的基本算法:
```cpp
#include <iostream>
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);
if (result != -1)
std::cout << "Element found at index " << result << std::endl;
else
std::cout << "Element not found in the array." << std::endl;
return 0;
}
```
阅读全文