演算法圖解學習筆記(一)——二分法
阿新 • • 發佈:2021-01-09
Python實現-----二分法
----原理:二分法查詢目標元素,就是依次選取中間元素判斷是大了還是小了,如果大了就選取之前的一半,重複以上步驟(選取中間元素之後再進行判斷),知道最後查詢出所需要的元素。切記如果能夠使用二分法的序列一定是有序的序列
時間複雜度:O(log2n);
# 二分法 # 定義一個函式,傳入一個list和一個元素 def binary_search(list, item): # 定義 low 和high是要查詢的列表的位置 low = 0 high = len(list) - 1 # 只要範圍沒有縮小到只剩下一個元素,就繼續查詢檢查中間元素 while low <= high: mid = int((low + high) / 2) guess = list[mid] # 檢查中間元素,大,小,相等 if guess == item: return mid if guess > item: high = mid - 1 else: low = mid + 1 return -1 if __name__ == '__main__': my_list = [1, 3, 5, 7, 9] print(my_list) index = binary_search(my_list, 99) print(index)
執行結果