1.条件
不是所有的数据类型都可以应用二分查找法,需要满足以下条件
- 是一个有序序列(索引数组)
- 已经排序好的序列
2.查找原理
在一个有序序列中查找一个指定的数,首先和这个序列的中间数相比,如果相等就找到返回。如果你这个中间数小,即在序列左边找,如果比中间数大就从右边查找,直到找到或未找到返回。
3.实现代码
1 #Python 二分查找 2 def binary_search(list,item): 3 low = 0 4 hight = len(list) - 1 5 6 while low <= hight: 7 mid = (low + hight) // 2 8 gess = list[mid] 9 if gess == item: 10 return mid 11 elif gess > item: 12 hight = mid - 1 13 else: 14 low = mid + 1 15 return None 16 17 res = binary_search([1,4,6,8,9],9) 18 print(res
运行结果:
1 #运行结果 2 4