二分法

二分法查找使用:二分法的输入为一个有序的元素列表,如果目标元素存在有序列表中,返回其位置,否则返回null;

使用二分法查找时,每次比较的元素均为有序列表的中间元素,每次都将余下的元素排查一半;

对于包含n个元素的有序列表,使用二分法查找最大复杂度为Olog(n)。

def binary_search(li , item):
low = 0
high = len(li) - 1
while low <= high:
mid = (low + high )//2
if li[mid] == item:
return mid
elif li[mid] > item:
high = mid - 1
else:
low = mid + 1
return None


if __name__ == '__main__':
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(binary_search(li, 9))
原文地址:https://www.cnblogs.com/songyuejie/p/11367531.html