python 二分查找算法

首先,二分查找的思路就是:

1、将每一个list从中间位置开始对比,找到就抛出,找不到就对比大小,保留剩下的一半list,以此类推

2、要判断要查找的数据是否存在于已知list中

3、从一开始就判断要查找的数字是否  大于list中最大的数字,小于最小的数字

4、注意:二分查找的规则是,list必须是有序的

def fun(data_list, t):
    """
        二分查找
    """
    a = 0
    max = len(data_list) - 1
    index = int(len(data_list)/2)
    r = 0
    if t < data_list[0] or t > data_list[-1]:
        print("数据不存在")
    else:
        while True:
            if len(data_list) == 1 and t != data_list[0]:
                print("数据不存在于列表中,请查看!")
                break
            if t > data_list[index]:
                a = index
                r = r + a
                data_list = data_list[a:]
                index = int(len(data_list)/2)

            elif t < data_list[index]:
                max = index
                data_list = data_list[:max]
                index = int(len(data_list) / 2)

            elif t == data_list[index]:
                r = r + index
                print("找到数据:", r)
                break


if __name__ == "__main__":
    data_list = [1, 2, 4, 6, 9, 12, 23, 34, 38, 45, 47, 60]
    t = 8
    fun(data_list, t)
原文地址:https://www.cnblogs.com/juan-F/p/13652482.html