给出二分查找的详细代码
时间: 2023-11-11 11:01:09 浏览: 35
下面是二分查找的详细代码(以查找一个有序数组中的元素为例):
```
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; // 找不到目标元素,返回 -1
}
```
上述代码中,`arr` 表示有序数组,`n` 表示数组的长度,`target` 表示要查找的目标元素。初始时,左边界 `left` 设为数组第一个元素的下标,右边界 `right` 设为数组最后一个元素的下标。在每次循环中,计算中间元素的下标 `mid`,然后将目标元素与 `arr[mid]` 进行比较,如果相等,则返回 `mid`,否则根据目标元素与 `arr[mid]` 的大小关系,更新左边界或右边界,继续进行查找。如果最终查找失败,即左边界超过了右边界,则返回 -1。