首页 > 编程语言 > 详细

Python 实现二分查找

时间:2021-03-26 23:03:52      阅读:44      评论:0      收藏:0      [点我收藏+]
"""
二分查找,在有序列表基础上
bisect 模块
"""

# 普通方式
def binary_search(sorted_array, val):
    if not sorted_array:
        return -1

    beg = 0
    end = len(sorted_array) - 1
    while beg <= end:
        mid = int((beg + end)/2)
        if sorted_array[mid] == val:
            return mid
        elif sorted_array[mid] > val:
            end = mid - 1
        else:
            beg = mid + 1
    return -1


# 递归实现二分
def binary_search_recursive(sorted_array, beg, end, val):
    if beg >= end:
        return -1
    mid = int((beg + end) / 2)
    if sorted_array[mid] == val:
        return mid
    elif sorted_array[mid] > val:
        return binary_search_recursive(sorted_array, beg, mid, val)
    else:
        return binary_search_recursive(sorted_array, mid+1, end, val)


print(binary_search_recursive([2,3,4], 0, 3, 4))

Python 实现二分查找

原文:https://www.cnblogs.com/jiaoran/p/14584302.html

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