码迷,mamicode.com
首页 > 其他好文 > 详细

嗡嘛呢叭咪吽

时间:2018-09-23 13:38:12      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:code   color   ==   有序   范围   数字   list   arch   item   

二分查找:

一般而言,对于包含n个元素的列表,用二分查找最多需要log2 n(以2为底,n的对数)步,而简单查找最多需要n步。

仅当列表是有序的时候,二分查找才管用。

函数 binary_search 接受一个有序数组和一个元素。如果指定的元素包含在数组中,这个函数将返回其位置。

low = 0  high = len(list) - 1  mid = (low + high) / 2

guess = list[mid]

如果猜的数字小了,就相应地修改 low 。if guess < item: low = mid + 1

如果猜的数字大了,就修改 high 。if guess > item: high = mid - 1

 1 #!coding:utf8
 2 
 3 def binary_search(li, item):
 4     low = 0
 5     high = len(li) -1
 6 
 7     while low <= high:  # 设定有效范围
 8         mid = int((low + high) / 2)  # Python3中需要明确转为整型
 9         guess = li[mid]
10 
11         if guess == item:
12             return mid
13         elif guess > item:
14             high = mid - 1
15         else:
16             low = mid + 1
17     return None
18 
19 my_list = [1, 3, 5, 7, 9, 11]
20 print(binary_search(my_list, 11))

 

嗡嘛呢叭咪吽

标签:code   color   ==   有序   范围   数字   list   arch   item   

原文地址:https://www.cnblogs.com/yangxiaoling/p/9692272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!