python 实现二分查找
时间: 2023-09-18 19:05:28 浏览: 125
### 回答1:
我可以为你提供一个Python实现二分查找的示例代码:def binary_search(array, target): n = len(array) left = 0 right = n - 1 while left <= right: mid = (left + right) // 2 if array[mid] == target: return mid elif array[mid] < target: left = mid + 1 else: right = mid - 1 return -1
### 回答2:
二分查找是一种高效的查找算法,可以用来在有序数组中快速找出特定元素的位置。下面是用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
return -1
```
这段代码首先初始化了low和high两个变量,它们分别表示数组的起始和结束位置。然后,利用一个while循环来在数组中查找目标元素。
在循环中,首先计算出当前的中间位置mid。然后,判断mid位置的元素与目标元素的大小关系。
- 如果mid位置的元素等于目标元素,说明找到了目标,直接返回mid。
- 如果mid位置的元素小于目标元素,说明目标元素在mid右侧,将low更新为mid+1。
- 如果mid位置的元素大于目标元素,说明目标元素在mid左侧,将high更新为mid-1。
如果循环结束后仍然没有找到目标元素,说明目标元素不存在于数组中,返回-1。
这就是用Python实现二分查找的基本过程。二分查找的时间复杂度为O(log n),比线性查找更加高效。
### 回答3:
二分查找(Binary Search)是一种高效的搜索算法,用于在有序数组中查找目标元素。以下是使用Python实现二分查找的示例代码:
```python
def binary_search(arr, target):
left = 0
right = 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 = [2, 4, 6, 8, 10, 12, 14, 16]
target = 10
result = binary_search(arr, target)
if result != -1:
print("目标元素在数组中的索引为:", result)
else:
print("目标元素不在数组中")
```
以上代码实现了`binary_search`函数,该函数接受一个有序数组`arr`和目标元素`target`作为输入,返回目标元素在数组中的索引。若目标元素不在数组中,则返回-1。函数内部使用`left`和`right`两个指针来确定每次查找的区间范围,通过不断缩小区间来逐步逼近目标元素。最后,根据返回的结果判断目标元素是否在数组中,并输出相应结果。
在以上示例中,`arr`为有序数组`[2, 4, 6, 8, 10, 12, 14, 16]`,`target`为10。根据二分查找算法,函数返回的结果为4,即10在数组中的索引位置。最后,输出结果为"目标元素在数组中的索引为: 4"。
阅读全文