c加加二分查找完整代码
时间: 2023-11-05 13:51:41 浏览: 96
以下是C++的完整代码实现二分查找算法:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
int binarySearch(int arr[], int n, int x) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid == x) {
return mid;
}
else if (arr[mid < x) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1; // 如果找不到目标元素,则返回-1
}
int main() {
int n;
cout << "请输入数组的大小: ";
cin >> n;
int arr[n];
cout << "请按照升序输入数组元素: ";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int x;
cout << "请输入要查找的元素: ";
cin >> x;
int result = binarySearch(arr, n, x);
if (result == -1) {
cout << "未找到目标元素" << endl;
}
else {
cout << "目标元素的索引为: " << result << endl;
}
return 0;
}
```
上述代码首先通过`cin`获取数组大小`n`,然后使用循环读取数组元素。接下来获取要查找的元素`x`。调用`binarySearch`函数进行二分查找,并将返回的结果存储在`result`变量中。最后根据`result`的值输出查找结果。
该代码中的二分查找函数`binarySearch`接收一个升序数组`arr`,数组大小`n`和要查找的元素`x`作为参数。在每一次迭代中,它通过计算中间索引`mid`来缩小查找范围,然后根据`arr[mid]`与`x`的大小关系更新左右边界,直到找到目标元素或范围缩小为空。如果找到目标元素,函数返回该元素的索引;如果找不到目标元素,函数返回-1。
请注意,上述代码中的输入和输出操作使用的是C++标准库中的`iostream`,你需要包含相应的头文件来使用这些操作。另外,为了使用`std`命名空间中的函数和对象,我们使用了`using namespace std;`。在实际的代码实现中,我们也可以避免使用`using namespace std;`,而是显式地写出命名空间,如`std::cout`和`std::cin`。
阅读全文