浅谈算法-二分查找
Posted 面向奶酪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈算法-二分查找相关的知识,希望对你有一定的参考价值。
浅谈算法-二分查找
先简单说明一下二分查找的工作原理。
举个栗子,猜中一个1到100之间的数字,你的目标是以最少的次数猜中这个数字
如果你从1开始依次猜测,1...2...3...4...7,这种称为简单查找。每次猜测只能排除掉一个数字。
如果数字是99,你得猜99次才能猜到!
最佳得查找方式
还是从上面的例子开始,1到100之间的数字。从50开始!
小了,但排除了一般的数字!至此,你知道1~50都小了。接下来,你猜75
又排除了一般的,美滋滋!使用二分查找时,你猜测的是中间的数字,每次都将余下的数字排除一半。接下来你猜63(50和75中间的数字)。
每次猜测排除的数字如下
100→50→25→13→7→4→2→1 使用二分查找时,每次都会排除一般的数字
一般而言,对于包含n个元素的列表,使用二分查找最多需要log2N,而简单查找需要n步。
代码如下:
def binary_search(list,item):
low = 0
high= len(list)-1
while low <=high:
mid = (low+high)
guess = list[mid]
if guess == item:
return mid
if guess > item:
high = mid-1
else:
low = mid +1
return None
my_list = [1,3,5,7,9]
print(binary_search(my_list,7))
练习:
假设有一个包含128个名字的有序列表,你要使用二分查找在其中查找一个名字,请问最多需要几步才能找到?
以上是关于浅谈算法-二分查找的主要内容,如果未能解决你的问题,请参考以下文章