用 Python 实现一个二分查找的函数
时间: 2024-05-10 18:15:44 浏览: 84
好的,以下是实现了二分查找功能的 Python 代码:
```python
def binary_search(arr, target):
"""
在一个已经排序的数组中使用二分查找算法查找特定目标值的位置。
:param arr: 已排序的数组
:param target: 要查找的目标值
:return: 如果找到返回目标值在数组中的索引位置,否则返回 -1。
"""
start, end = 0, len(arr) - 1
while start <= end:
mid = (start + end) // 2
if arr[mid] == target:
return mid
if arr[mid] < target:
start = mid + 1
else:
end = mid - 1
return -1
```
希望这个代码能够帮到您!
相关问题
python实现一个二分查找方法
可以使用以下代码实现一个二分查找方法:
```
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
return -1
```
这个函数接收一个已排序的数组和需要搜索的元素。它会返回元素的下标,如果元素不在数组中则返回-1。
用Python语言实现一个二分查找的程序
以下是Python语言实现二分查找的程序:
```python
def binary_search(arr, left, right, x):
if right >= left:
mid = left + (right - left) // 2
if arr[mid] == x:
return mid
elif arr[mid] > x:
return binary_search(arr, left, mid - 1, x)
else:
return binary_search(arr, mid + 1, right, x)
else:
return -1
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
print("元素在索引 %d" % result)
else:
print("元素不在数组中")
```
解释:`binary_search` 函数采用递归的方式实现二分查找。它接受四个参数:数组 `arr`,要查找的元素 `x`,数组的左边界 `left`,数组的右边界 `right`。如果右边界大于等于左边界,则计算出中间位置 `mid`,并判断 `arr[mid]` 是否等于 `x`。如果是,返回 `mid`;如果 `arr[mid]` 大于 `x`,则说明要查找的元素在左半部分,递归调用 `binary_search` 函数查找左半部分;如果 `arr[mid]` 小于 `x`,则说明要查找的元素在右半部分,递归调用 `binary_search` 函数查找右半部分。如果右边界小于左边界,说明要查找的元素不在数组中,返回 `-1`。
在主程序中,定义了一个有序数组 `arr`,要查找的元素 `x`,然后调用 `binary_search` 函数查找 `x`。如果返回值不是 `-1`,说明 `x` 在数组中,输出 `元素在索引 %d`;否则,输出 `元素不在数组中`。
阅读全文