二分查找算法,最常规的应用就是在一个有序数组中找特定的数。
一般分为四步走:
1. 判定条件为low小于high,low=0, high=size-1
2. mid=(low+high) / 2
3. 如果data[mid]满足条件直接返回,如果满足条件的数据在mid的右边则将low=mid+1,如果满足条件的数据在mid左边则将high=mid-1
4. 根据条件再次判定low,high两个元素是否满足条件
其实整个过程就不断缩小范围的过程。
def binary_search(list, target): low = 0 high = len(list) - 1 while(low < high): mid = int((low + high) / 2) if(target == list[mid]): return mid elif(target < list[mid]): high = mid - 1 else: low = mid + 1 return -1 if __name__ == '__main__': list = [1,2,3,4,5,6,7,8,9,10] index = binary_search(list, 6) print(index)