用c++写一个二分搜索算法代码
时间: 2023-06-05 10:04:30 浏览: 71
好的,以下是用C语言写一个二分搜索算法的代码示例:
```c
int binary_search(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;
}
}
return -1; // 表示没有找到
}
```
这是一个简单的二分搜索算法,接受一个已经排好序的数组,要查找的目标值,以及数组边界的左右指针。在每次循环中,算法都会计算中间位置,判断目标值与中间值的大小关系,然后不断收缩搜索范围,直到找到目标值或者搜索范围为空。如果最终没有找到目标值,则返回-1。
相关问题
请用c++写一个二分搜索算法
以下是使用C语言实现的二分搜索算法示例:
```c
#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x) {
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == x) {
return mid; // 元素 x 存在于数组中,返回位置
}
if (arr[mid] < x) {
l = mid + 1; // x 大于中间元素,只需在右半部分搜索
} else {
r = mid - 1; // x 小于中间元素,只需在左半部分搜索
}
}
return -1; // x 不存在于数组中,返回 -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) {
printf("元素 %d 不存在于数组中", x);
} else {
printf("元素 %d 存在于数组中,位置为 %d", x, result);
}
return 0;
}
```
上述代码中,我们定义了一个名为 `binarySearch` 的函数,它接收四个参数:
- `arr`:待搜索的数组
- `l`:搜索范围的左边界
- `r`:搜索范围的右边界
- `x`:要搜索的元素
函数返回值为元素 `x` 在数组 `arr` 中的位置(从 0 开始),如果 `x` 不存在于数组中,则返回 -1。
在 `main` 函数中,我们定义了一个有序数组 `arr`,并调用 `binarySearch` 函数搜索元素 10。如果元素存在于数组中,则输出它的位置;否则输出不存在的提示。
用c++写一个二分查找算法
当然可以,以下是一个简单的二分查找算法的 C 代码:
```
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1;
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;
}
}
return -1;
}
```
其中,`arr` 是一个已经排好序的数组,`n` 是数组的长度,`target` 是要查找的目标值。函数返回目标值在数组中的下标,如果目标值不存在,则返回 -1。
希望这个代码能够帮到你!