二分查找,更新指针:
def binary_search(array, key):
left = 0
right = len(array) - 1
while left <= right:
mid = left + (right - left) // 2
if array[mid] == key:
return mid
elif array[mid] < key:
left = mid + 1
else:
right = mid - 1
return -1
arr = [4, 3, 1, 7, 8]
key = 3
arr = sorted(arr)
ans = binary_search(arr, key)
print(ans)
二分查找,递归:
def binary_search(array, left, right, key):
mid = left + (right - left) // 2
if array[mid] == key:
return mid
elif array[mid] < key:
return binary_search(array, mid + 1, right, key)
elif array[mid] > key:
return binary_search(array, left, mid - 1, key)
return -1
arr = [4, 3, 1, 7, 8]
key = 3
arr = sorted(arr)
ans = binary_search(arr, 0, len(arr) - 1, key)
print(ans)