• 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)
  • 相关阅读:
    简单 dp 题选做
    UVa11327
    Codeforces Round #641 (div.2) 题解
    新博客
    数位dp的学习
    stl粗略用法
    cf437C The Child and Toy
    poj1995 Raising Modulo Numbers
    Tarjan的学习
    最短路模板
  • 原文地址:https://www.cnblogs.com/juan-F/p/13652482.html
Copyright © 2020-2023  润新知