用Python实现二分查找,并把代码展示出来
时间: 2024-04-25 17:05:45 浏览: 37
当然没问题,以下是Python实现二分查找的代码:
```python
def binary_search(lst, value):
low = 0
high = len(lst) - 1
while low <= high:
mid = (low + high) // 2
if lst[mid] == value:
return mid
elif lst[mid] > value:
high = mid - 1
else:
low = mid + 1
return -1 # 未找到值时返回 -1
```
这个函数接收两个参数:一个有序列表和要查找的值。它会在列表中寻找这个值,返回它的下标或 -1(如果未找到)。
这里使用了一个 while 循环来执行查找过程。在每次循环中,算法会计算一个“中间索引”(即列表中间的下标),并检查它是否包含要查找的值。如果包含,就直接返回中间索引。如果大于要查找的值,就在前半部分继续查找;如果小于要查找的值,就在后半部分继续查找。一旦找到值,就返回它的下标。如果整个列表都被搜索过了还未找到,就返回 -1 表示失败。
希望这能帮到你!
相关问题
python 实现二分查找
二分查找是利用了数组已经有序这一特性,在每次查找时先取数组的中间位置进行比对,根据比对结果可以确定查找范围是左半部分还是右半部分,然后递归地进行查找。以下是 Python 实现二分查找的代码:
```
def binary_search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
其中,nums 是已经有序的数组,target 是要查找的元素。如果查找成功,则返回该元素在数组中的下标;如果查找失败,则返回 -1。
python代码 二分查找
二分查找(Binary Search)是一种高效的搜索算法,它假设待查的元素在一个已排序的数组中。在Python中,可以通过递归或非递归的方式实现。这里展示的是非递归方式的二分查找代码[^2]:
```python
def binary_search(arr, num):
left = 0
right = len(arr) - 1
# 当左指针小于等于右指针时继续循环
while left <= right:
mid = (left + right) // 2 # 计算中间位置
# 检查中间元素是否为目标数
if arr[mid] == num:
return mid
# 如果中间元素大于目标数,缩小搜索范围到左半部分
elif arr[mid] > num:
right = mid - 1
# 否则,搜索范围在右半部分
else:
left = mid + 1
# 查找失败,返回-1
return -1
```
这个函数接受一个已排序的数组`arr`和一个目标数字`num`作为参数。如果找到目标数字,它会返回该数字在数组中的索引;否则,返回-1表示未找到。