刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
解答思路:
二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果目标元素大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。实现时可以通过递归或循环实现。
最优回答:
以下是使用Python实现二分查找的递归函数:
def binary_search_recursive(arr, target, low=0, high=None):
if high is None:
high = len(arr) - 1
if low > high:
return -1 # 元素不存在于数组中
mid = (low + high) // 2 # 取中间元素索引
if arr[mid] == target:
return mid # 找到目标元素,返回其索引
elif arr[mid] > target:
return binary_search_recursive(arr, target, low, mid - 1) # 在左半部分搜索
else:
return binary_search_recursive(arr, target, mid + 1, high) # 在右半部分搜索
以及使用循环实现的版本:
def binary_search_iterative(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 # 在右半部分搜索
return -1 # 元素不存在于数组中
本文链接:请编写一个Python函数,实现二分查找算法。要求使用递归方式实现。
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!