以下是Python的二分搜索算法的递归版本和迭代版本:
递归版本:
def binary_search_recursive(arr, target, low, high):
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
评估这两个版本的效率,可以考虑以下几个方面:
综上所述,递归版本和迭代版本的二分搜索算法在不同方面有不同的优势,具体选择哪个版本取决于具体的应用场景和需求。