Python二分查詢詳解
阿新 • • 發佈:2018-12-21
二分查詢詳解:
從有序列表的候選區data[0:n]開始,通過對待查詢的值與候選區中間值的比較,可以使候選區減少一半
二分查詢:
在一段數字內,找到中間值,判斷要找的值和中間值大小的比較。
如果中間值大一些,則在中間值的左側區域繼續按照上述方式查詢。
如果中間值小一些,則在中間值的右側區域繼續按照上述方式查 找。
直到找到我們希望的數字。
def Binary_Search(data,val): #low 和high代表下標 最小下標,最大下標 low=0 high=len(data)-1 # 只有當low小於High的時候證明中間有數 while low <=high: #取列表中間值的下標 mid=(low+high)//2 #用下標取出列表中間的值與要查詢的元素比較,如果相等就剛好找到,返回下標 if data[mid]==val: #返回他的下標 return mid #如果大於,就需要在前邊一半列表再次查詢,最小下標不變,最大下標則變成中間元素下標減一;就是取列表前半部分割槽間 elif data[mid]>val: high=mid-1 #如果小於,就需要在後邊一半列表再次查詢,最大下標不變,最小下標則變成中間元素下標加一;就是取列表後半部分割槽間 else: low=mid+1 return '元素不存在' data = ['a','b','m','c','d','e','k','f'] #用二分查詢需要先將列表以升序排序 ls=sorted(data) print(ls) print(Binary_Search(ls, 'm'))