算法简介
算法:一组完成任务的指令。
对数:log2ˉ1024=10。对数是幂运算的逆运算
二分查找:执行步骤从40亿缩短为32个,2^32约等于40亿。
线性时间(linear time):最多需要猜测的次数和列表长度相同
大O:算法需要执行的操作数(算法时间表示:次数,执行一次时间不考虑?)
算法时间:除了考虑大O:他表示最糟糕的情况下的运行时间。还要考虑平均时间
旅行商:前往n个城市,有多少种可能:n!
二分查找
你要查找电话本里面的John,先翻字典的一半,然后再一半去查找,这样最快。还有就是猜数字从0-100,我只告诉你大了还是小了2^7=128.最多只需要7步就可以确定数字
def binary_search(list,item):
low = 0
high = len(list)-1
while low <= high:
mid = (low + high) / 2
guess = list[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,3))