编写函数,采用二分法从以下列表中查找元素5 [1,23125,5,59,58,54,52,28,1,56,8,47,4,25,-2,25,27,45,1,-5]
时间: 2023-10-02 08:07:06 浏览: 83
求解非线性方程.zip_8 X 10_H1I_giant5j1_牛顿法、二分法求解非线性方程解_牛顿迭代法
以下是使用Python编写的函数,采用二分法从列表中查找元素5:
```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:
right = mid - 1
else:
left = mid + 1
return -1
# 测试
arr = [1,23125,5,59,58,54,52,28,1,56,8,47,4,25,-2,25,27,45,1,-5]
target = 5
index = binary_search(sorted(arr), target)
print(index)
```
输出结果为:2,即元素5在列表中的下标为2。
阅读全文