python中的二分查找

二分查找的前提是查找的数据按照顺序排序

二分查找的核心思想是递归

# arr:查找的对象
# left:arr的左边界
# right:arr的右边界
# x:需要查找的数
def binary_search(arr,left,right,x):
    # 左边界小于等于右边界
    if left<=right:
        # 得到中位数
        mid=int((left+right)//2)
        # x小于中位数,说明x在左半边,右边界为mid-1(从下标0开始找)
        if x<arr[mid]:
            # 递归继续找
            return binary_search(arr,left,mid-1,x)
        # x大于中位数,说明x在右半边,左边界为mid+1
        elif x>arr[mid]:
            # 递归继续找
            return binary_search(arr,mid+1,right,x)
        # 直到最后找到返回下标
        elif x==arr[mid]:
            return mid
    else:
        return '数据不存在'
    
arr = [1,2,3,4,5,6]
x = 3
# 用result来接收下标的值:2
result = binary_search(arr,0,len(arr-1),3)

 

posted @ 2023-04-07 16:34  半步多爱你  阅读(81)  评论(0)    收藏  举报