1. 程式人生 > 其它 >演算法知識點記錄

演算法知識點記錄

二分法

  • 二分查詢也稱折半查詢(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)