首选,仅当列表是有序的时候,二分查找才有用,函数binary_search 接受一个有序数组和一个元素,规定low=0, high=len(list)-1,那么每次都将检查中间的元素:
mid=(high+low)//2 如果(high+low)不是偶数,Python 3自动向下取整
guess=list[mid]
如果猜的数字小了,就相应的修改low
if guess<item: (item是想要查找的数字)
low=mid+1
如果猜的数字大了,就相应的修改high
完整代码如下:
def binary_search(list,item): low=0 high=len(list)-1 while low<=high: mid=(high+low)//2 guess=list[mid] if guess < item: low = mid + 1 if guess > item: high = mid -1 if guess = item: return mid #查找到该数,则返回该数的索引值 return None
更多有关查找和排序的代码详见我的github: https://github.com/zlsjsj/python-sort