二分查找返回关键值key在长度为len的数组arr[]中的位置,没有key则返回-1
时间: 2024-09-10 08:23:15 浏览: 41
二分查找是一种在有序数组中查找特定元素的算法。它的基本思想是将数组分为两半,先与中间元素比较,如果中间元素正好是要查找的关键值(key),则查找过程结束;如果中间元素大于key,则在左半边数组中继续查找;如果中间元素小于key,则在右半边数组中继续查找。这个过程不断重复,每次都将搜索范围缩小一半,直到找到key或者搜索范围为空。
以下是二分查找算法的一个简单实现:
```python
def binary_search(arr, key):
left, right = 0, len(arr) - 1
while left <= right:
mid = left + (right - left) // 2
if arr[mid] == key:
return mid # 找到key,返回其位置
elif arr[mid] < key:
left = mid + 1 # 在右半边查找
else:
right = mid - 1 # 在左半边查找
return -1 # 没有找到key,返回-1
```
这段代码中,`binary_search`函数接受一个有序数组`arr`和一个要查找的关键值`key`作为输入。函数首先设置两个指针`left`和`right`,分别指向数组的起始位置和结束位置。然后在一个循环中不断调整这两个指针,直到`left`超过`right`或者找到`key`为止。如果找到了`key`,就返回其在数组中的位置索引;如果没有找到,则返回-1。
阅读全文