二分查詢Python3 實現
阿新 • • 發佈:2018-12-11
# -!- coding: utf-8 -!- # !/usr/bin/env python 3.6.3 # author: Vivian # time: 2018/9/22 # 是排序後的序列,且支援下標索引的順序表 # 二分查詢適用物件:有序順序表 def binary_search(alist, data): # if len(alist):#查詢的終止遞迴條件 # mid = (len(alist)) // 2 # if alist[mid] == data: # return True # elif data < alist[mid]: # return binary_search(alist[:, mid], data) # else: # return binary_search(alist[mid + 1:], data) # else: # return False #為何我編寫的上標越界,由於使用了None,區別於node=None mid = (len(alist)) // 2 #if len(alist) ==0:#終止的失敗條件,正確 #if alist == []:#正確 #if alist is No=ne:這種是錯誤表達 if len(alist) == 0: # 終止的失敗條件,正確 return False elif data==alist[mid]:#成功條件 return True elif data < alist[mid]:#遞迴條件 return binary_search(alist[:, mid], data) else: return binary_search(alist[mid + 1:], data) if __name__=='__main__': a=[0,1,2,3,4,5,6,7,8,9] result1=binary_search(a,8) print(result1) result2=binary_search(a,100) print(result2)