zoukankan      html  css  js  c++  java
  • python——二分查找算法

    从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半
     
    二分查找:
    在一段数字内,找到中间值,判断要找的值和中间值大小的比较。
    如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找。
    如果中间值小一些,则在中间值的右侧区域继续按照上述方式查 找。
    直到找到我们希望的数字。
     
    import time 
    def cal_time(func): #装饰器
        def wrapper(*args, **kwargs):
            t1 = time.time()
            result = func(*args, **kwargs)
            t2 = time.time()
            print("running time:",func.__name__, t2 - t1)
            return result
        return wrapper
    
    @cal_time
    def bin_search(data_set,val):
        #low 和high代表下标 最小下标,最大下标
        low=0
        high=len(data_set)-1
        while low <=high:# 只有当low小于High的时候证明中间有数
            mid=(low+high)//2
            if data_set[mid]==val:
                return mid  #返回他的下标
            elif data_set[mid]>val:
                high=mid-1
            else:
                low=mid+1
        return # return null证明没有找到
    data_set = list(range(100000000))
    print(bin_search(data_set, 999999))
  • 相关阅读:
    A*算法实现 八数码问题
    poj 1077 Eight(bfs,dbfs, A*)
    poj 1729 Jack and Jill (搜索,bfs)
    poj 4105 拯救公主(bfs)
    poj4091The Closest M Points(KD-tree)
    资源整理
    推荐 VS2010入门教程—鸡啄米
    Cstring的使用
    VC 中TEXT、_T、L的区别
    电脑内存和CPU的关系
  • 原文地址:https://www.cnblogs.com/xuehuahongmei/p/6607499.html
Copyright © 2011-2022 走看看