首页 > 编程语言 > 详细

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

时间:2018-10-07 17:41:59      阅读:141      评论:0      收藏:0      [点我收藏+]

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

如下所示


技术分享图片

二分查找普通实现:

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 数据结构之二分查找的递归和普通实现

原文:https://www.cnblogs.com/kk328/p/9750675.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!