二分法及Python实现
时间: 2024-05-27 16:06:36 浏览: 172
二分法(Binary Search)是一种常见的查找算法,也叫折半查找。它要求待查找的序列必须有序。每次取中间位置的值与待查关键字进行比较,如果中间位置的值比待查找的值大,则在序列的左半部分继续执行查找;如果中间位置的值比待查找的值小,则在序列的右半部分继续查找,直到查找到为止。
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):
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
# 如果遍历结束后仍未找到目标,返回-1表示未找到
return -1
# 使用示例
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
print(f"找到了,索引为 {result}")
else:
print("没找到")
```
python实现二分法
二分查找算法(Binary Search),也被称为折半搜索,是一种在有序数组中寻找特定元素的搜索算法。它的工作原理是每次将数组分成两部分,判断目标值在哪一部分,然后继续在这个部分内应用同样的过程,直到找到目标值或者确定其不存在于数组中。Python实现二分查找通常如下:
```python
def binary_search(arr, target):
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
# 如果没找到目标值,返回-1表示不在数组中
return -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} 不在数组中")
```
阅读全文