算法知识点记录

二分法

  • 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
  • 时间复杂度O(h)=O(log2n)
  • 复制代码
    def func(l,aim):
        mid = (len(l)-1)//2
        if l:
            if aim > l[mid]:
                func(l[mid+1:],aim)
            elif aim < l[mid]:
                func(l[:mid],aim)
            elif aim == l[mid]:
                print("bingo",mid)
        else:
            print('找不到')
    复制代码
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def bin_search(data_list, val):   
        low = 0                         # 最小数下标   
        high = len(data_list) - 1       # 最大数下标   
        while low <= high:       
            mid = (low + high) // 2     # 中间数下标       
            if data_list[mid] == val:   # 如果中间数下标等于val, 返回           
                return mid       
            elif data_list[mid] > val:  # 如果val在中间数左边, 移动high下标           
                high = mid - 1       
            else:                       # 如果val在中间数右边, 移动low下标           
                low = mid + 1   
        return # val不存在, 返回None
    ret = bin_search(list(range(1, 10)), 3)
    print(ret)

      

posted @   hccccch  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示