说明:
函数binary_search接受一个有序数组和一个元素,如果指定的元素包含在数组中,这个函数将返回其位置。开始时查找整个数组,每次检查中间的元素,如果猜的数小了,对应修改low;如果猜的数大了,对应修改high。
代码:
1 def binary_search(list1,item): 2 low = 0 3 high = len(list1)-1 4 5 while low <= high: #只要范围没有缩小到只包含一个元素 6 mid = (low+high)//2 #检查中间元素 7 guess = list1[mid] 8 if guess == item: 9 return mid #返回索引 10 if guess > item: 11 high = mid -1 12 if guess < item: 13 low = mid + 1 14 15 return None 16 17 my_list = [1,3,5,7,9] 18 19 print(binary_search(my_list,7)) 20 print(binary_search(my_list,3)) 21 print(binary_search(my_list,-1))
结果:
3
1
None