二分查找与斐波那契

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)

Python递归函数与斐波那契数列

leetcode查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)

有序数组的二分查找&斐波那契查找

[Algorithm]二分插值斐波那契查找算法 Java 代码实现