用c++写一个二分查找算法
时间: 2023-05-17 09:03:55 浏览: 54
当然可以,以下是一个简单的二分查找算法的 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。
希望这个代码能够帮到你!
相关问题
用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。
注意,这个算法只适用于已经排好序的数组。
用c++写个二分查找算法
A:
```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。
该算法使用了迭代方式进行二分查找。它初始化左右边界为数组的首尾元素下标,然后进入循环。在每次迭代中,它计算出当前左右边界的中间位置 `mid`,如果 `arr[mid]` 等于 `target`,则直接返回 `mid`。如果 `arr[mid]` 小于 `target`,则将左边界移动到 `mid + 1`。反之,如果 `arr[mid]` 大于 `target`,则将右边界移动到 `mid - 1`。直到左右边界相遇并且没有找到目标值时,算法退出并返回 -1。