python实现二分查找的两种方法
# 二分查找
def search_1(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid, arr[mid]
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
else:
return -1
arr = [2, 4, 6, 8, 10, 12, 14, 16]
target = 16
# res = search_1(arr, target)
# print(res)
def search_2(arr, target, left, right):
if left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid, arr[mid]
elif arr[mid] < target:
return search_2(arr, target, mid + 1, right)
else:
return search_2(arr, target, left, mid - 1)
else:
return -1
arr = [2, 4, 6, 8, 10, 12, 14, 16]
target = 12
result = search_2(arr, target, 0, len(arr)-2)
print(result)