二分查找也叫折半查找,算法的时间复杂度为O(log2N)。为什么为O(log2N),我们借用下图进行说明
python的代码实现如下:
# 在二分查找中,L是有序的,二分查找函数返回要查找的数在序列里面的索引
# 这个函数实现的是查找不重复数组
def binary_search(local_L, local_n):
left = 0
right = len(L) - 1
index = []
while True:
middle = (left + right) // 2
if left > right:
break
if local_L[middle] == local_n:
return middle
elif local_L[middle] < local_n:
left = middle + 1
else:
right = middle - 1
return index
if __name__ == '__main__':
L = [1, 2, 3, 4, 6, 7]
a = 3
print(binary_search(L, a))
测试结果为:
2
参考链接:https://blog.csdn.net/u010452388/article/details/80891462