python二分查找代码
时间: 2023-08-31 08:40:24 浏览: 170
### 回答1:
Python的二分查找代码如下:def binary_search(arr, target):
left = 0
right = len(arr)-1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] > target:
right = mid - 1
else:
left = mid + 1
return -1
### 回答2:
二分查找是一种在有序数组中查找指定目标值的算法。它通过将数组分割成两个子数组,然后判断目标值位于哪个子数组中,从而缩小搜索范围,直到找到目标值或者确定不存在。
以下是一个示例的Python代码实现二分查找:
```python
def binary_search(arr, target):
left = 0
right = 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`两个游标来表示当前搜索的范围,初始时`left`指向数组的第一个元素,`right`指向数组的最后一个元素。在每一次循环中,找到当前搜索范围的中间位置`mid`,并与目标值进行比较。如果`arr[mid]`等于目标值,则直接返回`mid`;如果`arr[mid]`小于目标值,则说明目标值在右侧子数组中,将`left`更新为`mid + 1`;如果`arr[mid]`大于目标值,则说明目标值在左侧子数组中,将`right`更新为`mid - 1`。不断通过二分法缩小搜索范围,直到找到目标值或者确定不存在。
这个二分查找算法的时间复杂度是O(logn),其中n是数组的长度,因为每次循环都将搜索范围缩小一半。因此,它比线性搜索更高效,特别是在大规模数据集上。
阅读全文