请用Python语言写一份执行二分查找的代码
时间: 2023-07-19 12:21:46 浏览: 37
好的,以下是一个简单的二分查找实现的 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` 表示要查找的目标元素。在函数中,我们首先定义 `left` 和 `right` 分别表示数组的左右边界。然后,我们每次取数组的中间元素 `mid`,如果 `arr[mid]` 等于目标元素 `target`,则直接返回 `mid`;如果 `arr[mid]` 小于 `target`,则说明目标元素在 `mid` 的右侧,因此更新 `left` 值;如果 `arr[mid]` 大于 `target`,则说明目标元素在 `mid` 的左侧,因此更新 `right` 值。如果最终无法找到目标元素,则返回 `-1` 表示查找失败。
相关问题
用Python写一个二分查找代码
def binary_search(list, item):
low = 0
high = len(list) - 1
while low <= high:
mid = (low + high) // 2
guess = list[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None答案是:这是一段用Python写的二分查找算法的代码,它可以在一个有序列表中查找一个给定的数字。
用python写一段二分查找的代码
### 回答1:
def binary_search(list, target):
low = 0
high = len(list) - 1 while low <= high:
mid = (low + high) // 2
if list[mid] == target:
return mid
elif list[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1print(binary_search([1, 2, 3, 4, 5], 4)) # 3
### 回答2:
二分查找(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:
high = mid - 1
# 如果中间值小于目标值,则在右半部分查找
else:
low = mid + 1
# 如果找不到目标值,则返回-1
return -1
# 测试代码
nums = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91]
target = 16
result = binary_search(nums, target)
if result != -1:
print("目标值所在的索引为:", result)
else:
print("未找到目标值")
```
以上代码首先定义了一个`binary_search`函数,接受一个有序数组`arr`和目标值`target`作为参数。函数通过维护一个左边界`low`和右边界`high`,在每次循环中计算中间索引`mid`。然后根据中间值与目标值的大小关系,更新`low`和`high`的值,最终返回目标值在数组中对应的索引,如果找不到则返回-1。
然后,在测试代码中定义了一个有序数组`nums`和目标值`target`,调用`binary_search`函数进行查找,并打印结果。如果找到目标值,则输出目标值所在的索引;如果未找到,则输出未找到的提示信息。
通过以上代码,可以实现二分查找算法,并在有序数组中查找目标值。
### 回答3:
二分查找是一种在有序数组中查找指定元素的算法。它先确定数组的中间元素,然后将指定元素与中间元素进行比较,如果相等则返回中间元素的索引,如果较小则在数组的前半部分继续查找,如果较大则在数组的后半部分继续查找,直到找到指定元素或者数组被查找完毕。
以下是使用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
```
在上述代码中,`arr`是待查找的有序数组,`target`是要查找的目标元素。函数`binary_search`实现了二分查找算法,并返回目标元素在数组中的索引,如果目标元素不存在则返回-1。
算法通过不断更新`low`和`high`的值来缩小查找范围,直到找到目标元素或者查找范围为空。
在每一次循环中,首先计算出中间元素的索引`mid`,然后根据`arr[mid]`与`target`的比较结果来更新`low`和`high`的值。如果`arr[mid]`等于`target`,则返回`mid`作为查找结果;如果`arr[mid]`小于`target`,则在数组的后半部分继续查找,即将`low`更新为`mid + 1`;如果`arr[mid]`大于`target`,则在数组的前半部分继续查找,即将`high`更新为`mid - 1`。
如果循环结束时仍未找到目标元素,则返回-1。
这段代码实现了二分查找算法,可以方便地在有序数组中查找指定元素。