算法学习:二分法

说明:

函数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

猜你喜欢

转载自www.cnblogs.com/hqq2019-10/p/11681417.html