二分查找
- 利用有序表的特性,迅速缩小待比对数据项的范围
- 从列表中间的项开始比对
- 如果列表中间的项匹配成功,则查找结束
- 如果不匹配,那么有两种情况:
- 列表中间的项比查找项大,那么查找项只能出现在前半部分
- 列表中间的项比查找项小,那么查找项只能出现在后半部分
- 无论如何,将对比范围缩小到原来的一半:n/2
- 继续采用上面的方法查找,每次都会将比对范围缩小一半
普通版算法
def binarySearch(alist, item):
first = 0
last = len(alist) - 1
found = False
while first <= last and not found:
midpoint = (first + last) // 2
if alist[