python 数据结构之二分查找的递归和普通实现

Posted kailicard

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 数据结构之二分查找的递归和普通实现相关的知识,希望对你有一定的参考价值。

二分查找就是待查找的列表进行分半搜索

如下所示


image

二分查找普通实现:

def erfen(alist, item):
    start = 0
    end = len(alist) - 1
    while start <= end:
        n = int((start + end) / 2)
        if alist[n] == item:
            return True
        elif alist[n] > item:
            end = n - 1
        else:
            start = n + 1
    return False


alist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(erfen(alist,10))
print(erfen(alist, 3))

递归实现:

#import sys
#sys.setrecursionlimit(1000000)
"""解决maximum recursion depth exceeded error """

def erfen(alist,item):
    if len(alist) == 0:
        return False
    else:
        mid=int(len(alist)/2)
        if alist[mid] == item :
            return True
        elif item < alist[mid]:
            return erfen(alist[:mid],item)
        else :
            return erfen(alist[mid+1:],item)

alist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(erfen(alist,10))
print(erfen(alist, 3))

以上是关于python 数据结构之二分查找的递归和普通实现的主要内容,如果未能解决你的问题,请参考以下文章

递归函数之二分查找

递归-之二分查找与选择排序算法

python 递归和二分法查找

python实现二分叉查找

图解二分查找的递归和非递归实现

python实现二分查找