算法学习:二分法

。_饼干妹妹 提交于 2019-12-01 10:23:36

说明:

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!