写一个二分查找算法的例子
时间: 2023-07-19 21:40:58 浏览: 45
好的,以下是一个基于Python语言的二分查找算法的例子:
```python
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
这个函数接受两个参数,一个是要查找的有序数组 `arr`,另一个是要查找的目标值 `target`。它的返回值是目标值在数组中的下标,如果目标值不存在,则返回 -1。
函数中使用了两个变量 `left` 和 `right`,它们分别代表了数组的左右边界。初始时,左边界为 0,右边界为数组的长度减 1。然后,在一个 while 循环中,我们不断折半查找,直到找到目标值或者左右边界相遇。
在每次循环中,我们计算出中间位置 `mid`,如果中间位置的值等于目标值,那么直接返回中间位置。如果中间位置的值小于目标值,那么说明目标值可能在右半部分,我们把左边界移动到中间位置的右侧。如果中间位置的值大于目标值,那么说明目标值可能在左半部分,我们把右边界移动到中间位置的左侧。这样不断缩小查找范围,直到找到目标值或者查找范围为空,就退出循环。
这个算法的时间复杂度是 O(log n),比线性查找要快很多,特别是对于大规模的数据。