算法图解(一)
1、二分查找
下面的示例说明了二分查找的工作原理。我随便想一个1~100的数字。
你的目标是以最少的次数猜到这个数字。你每次猜测后,我会说小了、大了或对了。
假设你从1开始依次往上猜,猜测过程会是这样。
这是简单查找 ,更准确的说法是傻找 。每次猜测都只能排除一个数字。如果我想的数字是99,你得猜99次才能猜到!
1.1 更佳的查找方式
下面是一种更佳的猜法。从50开始。
小了,但排除了一半 的数字!至此,你知道1~50都小了。接下来,你猜75。
大了,那余下的数字又排除了一半!使用二分查找时,你猜测的是中间的数字,从而每次都将余下的数字排除一半。接下来,你猜63(50和75中间的数字)。
这就是二分查找。
示例代码:
def binary_search(list, item):
low = 0 (以下2行)low和high用于跟踪要在其中查找的列表部分
high = len(list)—1
while low <= high: ←----