二分查找
优点:
从包含n个元素的数组中执行查找操作仅仅需要O(lg n)时间
内容:
在任意情况下,我们仅仅考虑某个子数组,也就是说,介于两个索引之间的部分数组,将两个索引依次记为p=1,r=n,因此开始时, 子数组为整个完整数组。我们反复将子数组规模减半,直到发现以下任何一种情况发生:要么找到了要查找的元素,要么当前 的子数组为空(也就是说p>r)。反复对子数组执行减半操作需要花费O(lgn)的运行时间。
test = list(range(1,11)) test >>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def binary(test,target): p = 0 r = len(test)-1 while p<=r: q = (p+r)//2 if test[q] == target: return q else: if test[q]>target: r = q-1 else: p = q+1 return "Not found"