请用Python写一个二分查找
时间: 2024-02-16 07:34:40 浏览: 73
二分查找(Binary Search)是一种常用的查找算法,也称为折半查找。它是一种效率较高的算法,适用于已经排好序的数组。下面是用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,分别指向数组的第一个和最后一个元素。
2. 循环执行以下步骤,直到找到目标值或者范围为空:
1. 计算中间位置mid:mid = (left + right) // 2。
2. 如果中间元素等于目标值,返回mid。
3. 如果中间元素小于目标值,说明目标值在右半部分,将left移动到mid的右边一个位置:left = mid + 1。
4. 如果中间元素大于目标值,说明目标值在左半部分,将right移动到mid的左边一个位置:right = mid - 1。
3. 如果循环结束仍然没有找到目标值,返回-1。
使用示例:
```python
arr = [1, 3, 5, 7, 9]
target = 5
index = binary_search(arr, target)
print("要查找的目标值在数组中的下标是:", index)
```
输出结果:
```
要查找的目标值在数组中的下标是: 2
```
在这个例子中,要查找的目标值是5,在数组中的下标是2。
阅读全文