二分查找(折半查找)
条件:线性表必须采用顺序存储,且关键码有序
原理:在有序表中取中间记录作为比较对象,若给定值与中间记录的关键字相等则查找成功
若更定值小于中间记录的关键字,则在中间记录的左半区继续查找
若给定值大于中间记录的关键字,则在中间记录的右半区继续查找
……
不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止
……
#!/usr/bin/env python
def Binary_Search(L,key):
low=0
high=len(L)-1
while high>=low:
mid=(high+low)/2
if L[mid]>key:
high=mid-1
elif L[mid]<key:
low=mid+1
else:
return mid
else:
return "no exist"
if __name__ == '__main__':
L=[0,1,16,24,35,47,59,62,73,88,99]
print Binary_Search(L,62)