算法知识点记录

二分法

  • 二分查找也称折半查找(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('找不到')
  • 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 @ 2022-03-07 19:03  hccccch  阅读(40)  评论(0)    收藏  举报