15 二分查找
def binary_search(a, item):
n = len(a)
head = 0
rear = n - 1
while head <= rear:
mid = (head + rear) // 2
if a[mid] == item:
return mid
elif a[mid] < item:
head = mid + 1
else:
rear = mid - 1
return -1
def binary_search(a, head, rear, item):
if head > rear:
return -1
mid = (head + rear) // 2
if a[mid] == item:
return mid
elif a[mid] < item:
return binary_search(a, mid + 1, rear, item)
else:
return binary_search(a, head, mid - 1, item)
if __name__ == '__main__':
a = [0, 1, 2, 4, 6, 8, 10, 17, 30]
print(binary_search(a, 2))