二分查找的前提是数组有序,具体实现为:
def binary_search(data, target):
left, right = 0, len(data) - 1
while left <= right:
mid = left + (right - left + 1) / 2
if data[mid] == target:
return mid
elif data[mid] > target:
right = mid - 1
else:
left = mid + 1
return -1
if __name__ == '__main__':
data = [1, 4, 5, 7, 8, 9]
print binary_search(data, 5)
print binary_search(data, 0)