python二分法查找
时间: 2023-06-29 10:15:15 浏览: 111
二分查找是一种在有序数组中查找特定元素的搜索算法。算法的工作原理是将数组分成两个部分:已排序的一部分和未排序的一部分,然后确定要查找的元素在哪个部分中,进而继续在该部分中进行查找,直到找到该元素或确定该元素不存在为止。
以下是 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`。
相关问题
python二分法查找代码
二分查找,也叫折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是每次将待查找范围缩小一半,直到找到目标元素或者确定它不存在。以下是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 # 如果没找到,返回-1表示不存在
# 使用示例
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
print(f"元素 {target} 的位置是 {result}")
else:
print(f"{target} 不在数组中")
python二分法查找递归
Python中的二分法查找递归是一种搜索算法,它针对有序数组或列表。其基本思想是将待查找区间每次都减半,通过比较中间元素与目标值的关系来逐步缩小范围,直到找到目标值或者确定其不存在于序列中。以下是递归版本的二分查找伪代码:
```python
def binary_search_recursive(arr, target, low=0, high=None):
if high is None:
high = len(arr) - 1
if low > high:
return -1 # 目标不在数组内,返回-1
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search_recursive(arr, target, mid + 1, high)
else:
return binary_search_recursive(arr, target, low, mid - 1)
# 使用示例
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search_recursive(arr, target)
print(f"Target {target} found at index {result}")
```
阅读全文