1. 程式人生 > >演算法學習之二分查詢演算法的python實現

演算法學習之二分查詢演算法的python實現

  ——參考自《演算法圖解》

  我們假設需要查詢的陣列是有序的(從大到小或者從小到大),如果無序,可以在第四行後插入一句

1 my_list.sort()

  完整程式碼如下

 1 def binary_search(my_list, item):
 2     # low和high用於跟蹤要在其中查詢到的列表的部分
 3     low = 0
 4     high = len(my_list)-1
 5     while low <= high:
 6         mid = (low+high)//2  # 地板除,保證mid為整數
 7         guess = my_list[mid]
8 if guess == item: 9 return mid 10 if guess > item: 11 high = mid - 1 12 else: 13 low = mid + 1 14 return None 15 16 17 # 測試一下 18 my_list = [1, 3, 5, 7, 9] 19 print(binary_search(my_list, 3)) # 1 20 print(binary_search(my_list, -1)) #
None

 

Q1:假設一個包含有128個名字的有序列表,使用二分查詢一個名字,那麼最多需要查詢幾次呢?

A1:log2n n=128,需要7次