二分查找与斐波那契
Posted xiayuhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找与斐波那契相关的知识,希望对你有一定的参考价值。
二分查找
l=[1,2,10,30,33,99,101,200,301,311,402,403,500,900,1000]
def search(n,l):
if len(l) == 1:
print("not exit")
return
index = len(l)//2
if n > l[index]:
l = l[index+1:]
search(n,l)
elif n < l[index]:
l = l[:index]
search(n,l)
else:
print("find it")
search(200,l)
def search(n,l,start=0,stop=len(l)-1):
if start <= stop:
mid = start + (stop-start) // 2
print(‘start:[%s] stop:[%s] mid:[%s] mid_val:[%s]‘ % (start, stop, mid, l[mid]))
if n > l[mid]:
start = mid + 1
elif n < l[mid]:
stop = mid - 1
else:
print("find it")
return
search(n,l,start,stop)
else:
print("not exits")
search(10,l)
斐波那契
非递归
def fib(n):
a,b = 0,1
while a < n:
print(a,end=" ")
a,b = b,a+b
fib(100)
递归
def fib(a,b,stop):
if a > stop:
return
print(a,end=" ")
fib(b,a+b,stop)
fib(0,1,100)
以上是关于二分查找与斐波那契的主要内容,如果未能解决你的问题,请参考以下文章
高级数据结构—二项堆与斐波那契堆详细介绍(算法导论中科大USTC)