二分查找

时间:2019-11-13
本文章向大家介绍二分查找,主要包括二分查找使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在一个有序列表中找一个数,返回该数出现的位置,如果不存在返回-1,例如[1,3,5,7,9]中查找5,返回它的位置‘2’。

# 二分查找
import time
# 使用循环实现

def binary(value, key):
    # 获取查找范围对应的左侧下标值/右侧
    left = 0
    right = len(value)-1
    # 当仍存在合法的查找范围时重复该过程
    while left <= right:
        # 中间元素对应下标值
        middle = (left + right) // 2
        # 比较中间值与指定值:
        if value[middle] == key:
            # 如果相等
            # 查找成功,返回下标值
            return middle
        elif value[middle] > key:
            # 如果指定值比中间值小
            # 则在左侧继续查找
            right = middle - 1
        else:
            # 如果指定值比中间值大
            # 则在右侧继续查找
            left = middle + 1
    # 如果遍历完所有数据仍未找到
    # 则查找失败,返回-1
    return -1

# 原始数据
values = [1,3,5,7,9]
# 要查找扑克牌 6
key = 5
# 调用二分查找
res = binary(values, key)
# 根据返回值打印结果
if res == -1:
    print('查找失败')
else:
    print('查找成功,对应下标值:', res)
View Code

原文地址:https://www.cnblogs.com/lw1095950124/p/11848314.html