二分查找的实现C++代码
时间: 2023-02-27 18:52:44 浏览: 79
好的,这是二分查找的一个实现代码:
```
#include <stdio.h>
int binary_search(int arr[], int l, int r, int x) {
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] < x)
l = mid + 1;
else
r = mid - 1;
}
return -1;
}
int main(void) {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binary_search(arr, 0, n - 1, x);
(result == -1) ? printf("元素不在数组中")
: printf("元素在数组中的索引为 %d", result);
return 0;
}
```
请注意,代码仅作为示例,并非最佳实践。
相关问题
数据结构c++实现二分查找代码
以下是C++实现二分查找的代码:
```cpp
template<typename T>
int binary_search(T arr[], int size, T value) {
int left = 0, right = size - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == value) {
return mid;
} else if (arr[mid] < value) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
【模板】二分查找C++代码
当然,这是一个二分查找的 C++ 代码模板:
```cpp
#include <iostream>
#include <vector>
// 二分查找函数
int binarySearch(const std::vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 未找到目标元素
}
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int target = 6;
int index = binarySearch(nums, target);
if (index != -1) {
std::cout << "目标元素 " << target << " 的索引是 " << index << std::endl;
} else {
std::cout << "未找到目标元素 " << target << std::endl;
}
return 0;
}
```
以上是一个简单的二分查找的 C++ 代码模板。你可以将目标数组和目标元素替换成你需要的具体值来测试代码。