美文网首页
python3 二分查找

python3 二分查找

作者: fanchuang | 来源:发表于2020-03-28 18:40 被阅读0次

有序数组的二分查找, 常规操作。

# author: fanchuangwater@gmail.com
# date: 2020/3/28 下午5:08
# 目的:  有序数组的二分查找。


def binary_search(data_list, target):
    start = 0
    end = len(data_list) - 1
    # 这里的条件也是需要注意的  不是 start < end:
    while start <= end:
        # middle = start + (end - start) // 2    # 我记得youtube上那位的写法是这样的.推荐这种写法。 
        middle = (start + end) // 2              # 另一种写法。  
        if data_list[middle] == target:
            return middle
        elif data_list[middle] < target:
            # 这里的 +1 和下面的 -1 都是我之前做错的的地方。
            start = middle + 1
        else:
            end = middle - 1
    return -1


# test some stuff
l = [1, 5, 7, 8, 13, 19, 23, 29]
ans = binary_search(l, 15)
print(ans)      # -1

相关文章

网友评论

      本文标题:python3 二分查找

      本文链接:https://www.haomeiwen.com/subject/scpsuhtx.html