首页 > 编程语言 > 详细

python---二分查找的实现

时间:2020-03-18 17:16:34      阅读:35      评论:0      收藏:0      [点我收藏+]
def binary_search_1(alist, item):
    """递归版---二分查找"""
    n = len(alist)
    if n > 0:
        # 中间值
        mid = n // 2
        if alist[mid] == item:
            return True
        # 查找值落在中间值左侧
        elif item < alist[mid]:
            return binary_search_1(alist[:mid], item)
        # 查找值落在中间值右侧
        else:
            return binary_search_1(alist[mid + 1:], item)
    return False


def binary_search_2(alist, item):
    """非递归版---二分查找"""
    n = len(alist)
    left = 0
    right = n - 1

    while left <= right:
        mid = (left + right) // 2
        if alist[mid] == item:
            return True
        # 查找值落在中间值左侧, 更改right
        elif item < alist[mid]:
            right = mid - 1
        # 查找值落在中间值右侧, 更改left
        else:
            left = mid + 1

    return False


if __name__ == '__main__':
    alist = [11, 18, 20, 24, 36, 44, 45, 66, 78]
    print(binary_search_2(alist, 24))
    print(binary_search_2(alist, 89))

python---二分查找的实现

原文:https://www.cnblogs.com/KX-Lau/p/12518223.html

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