一、知识概括:
二分查找是一种算法,起输入是一个有序地元素列表(必须有序的原因是因为,二分查找主要是基于有序地元素快速查找指定元素的)。如果要查找元素包含在列表中,二分查找返回其位置;否则回null;
基于python用例:
def binary_search(list,item):
low = 0 //low 和 high用于跟踪要在其中查找的列表不分,也是是确定元素的范围
high=len(list)-1
while low <= high: //只要范围没有缩小到只包含一个元素
mid = (low+high) //就检查中间的元素
guess = list[mid]
if guess == item: //如果找到了元素,则输出元素位置(数组是从零开始的)
return mid
if guess > item: //如果猜的数字大了
high = mid -1
else: //如果猜的数字小了
low = mid + 1
return None //元素列表没有指定元素,输出空(java :null;python :None)
测试结果:
>>> my_list = [1,3,5,7,9] //创建一个数组
>>> print(binary_search(my_list,3)) //带入参数
1 //输出结果
>>> print(binary_search(my_list,5))
2
>>> print(binary_search(my_list,9))
4
>>> print(binary_search(my_list,10))
None