演算法知識點記錄
阿新 • • 發佈:2022-03-08
二分法
- 二分查詢也稱折半查詢(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]:
-
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)