使用python写一个 二分法
时间: 2023-09-06 13:14:13 浏览: 96
二分法,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是把数组分成两半,然后确定目标元素在哪一半中,再对该半进行二分查找。
以下是使用python实现二分法的示例代码:
```python
def binary_search(arr, target):
"""
二分查找
:param arr: 有序数组
:param target: 目标元素
:return: 目标元素在数组中的索引,如果不存在则返回-1
"""
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
```
在这个函数中,我们首先初始化左右指针为数组的第一个和最后一个元素的索引。然后,在while循环中,我们计算中间元素的索引,如果该元素等于目标元素,则返回该索引。如果中间元素小于目标元素,则目标元素位于右半部分,将左指针移动到mid+1的位置。如果中间元素大于目标元素,则目标元素位于左半部分,将右指针移动到mid-1的位置。如果在while循环中未找到目标元素,则返回-1。
下面是一个示例,展示如何使用这个函数来查找有序数组中的元素:
```python
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
print(f"目标元素在数组中的索引为{result}")
else:
print("目标元素不存在于数组中")
```
输出:
```
目标元素在数组中的索引为2
```
这表明目标元素5在数组的第3个位置上。
阅读全文