python 二分查找函数
时间: 2023-10-19 15:29:42 浏览: 105
Python中有多种方式可以实现二分查找函数,以下是一种基于递归的实现方式:
```python
def binary_search(arr, target):
"""
二分查找函数
:param arr: 有序列表
:param target: 目标元素
:return: 目标元素在列表中的索引,若不存在则返回-1
"""
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
```
你可以将要查找的列表作为第一个参数传递给 `binary_search` 函数,将要查找的目标元素作为第二个参数传递给它。函数会返回目标元素在列表中的索引,若不存在则返回-1。
请注意,这里的二分查找函数假定输入的列表是已经按升序排列好的。如果列表是乱序的,你需要先对列表进行排序再使用该函数进行查找。
相关问题
python二分查找函数
Python中的二分查找函数可以使用标准库中的`bisect`模块来实现。具体实现方法如下:
```python
import bisect
def binary_search(arr, x):
i = bisect.bisect_left(arr, x)
if i != len(arr) and arr[i] == x:
return i
else:
return -1
```
其中,`bisect.bisect_left(arr, x)`函数返回的是将`x`插入到有序数组`arr`中时,插入位置的索引。如果`x`已经在数组中,则返回它在数组中的索引。
软件测试二分查找函数,二分查找
好的,以下是一个简单的二分查找函数的 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
```
这个函数接收两个参数:一个有序数组 `arr` 和一个目标值 `target`,返回目标值在数组中的索引位置。如果目标值不存在,则返回 `-1`。
算法的核心思想是不断缩小查找区间,每次将区间的中间位置与目标值进行比较,然后根据比较结果缩小区间。
你可以使用该函数来测试你的软件是否能正确地查找给定数组中的目标值。
阅读全文