算法-04 -二分查找

 

 

案例:

 

def binary_search(li, val):
    left = 0
    right = len(li) - 1
    while left <= right:  # 候选取有值
        mid = (left + right) // 2  # mid 位置
        if li[mid] == val:  # 如果mid 的值等于目标值
            return mid  # 返回mid 位置
        elif li[mid] > val:  # 如果mid的值大于目标值。则说明。目标值在mid的左侧,此时right需要移动要mid的左侧,也就是mid-1
            right = mid - 1
        else:  # mid 的值小于目标值,则说明目标值在mid的右侧,此时left需要向右移动,也就是mid +1
            left = mid + 1
    else:
        return None


li = [1, 2, 3, 4, 5, 6, 7, 8, 9]

result = binary_search(li, 3)

print(result)

 

 

输出:2

posted on 2023-08-02 15:40  寻不到花的蝶  阅读(21)  评论(0)    收藏  举报