二分法演算法原理:陣列是有序陣列,
確定該期間的中間位置center
將查詢的值key與array[center]比較。若相等,查詢成功返回此位置;否則確定新的查詢區域,繼續二分查詢。
新區域的確定:如果key>arrey[center],則起始位置變為center+1,結束位置不變
如果key
每一次查詢與中間值比較,可以確定是否查詢成功,不成功當前查詢區間縮小一半。遞迴找,即可。
以下為**請參考:
1 def binarysearch(arr,key):
2 start=0
3 end=len(arr)-1
4 if key in arr:
5 while true:
6 center = int((start+end)/2)
7 if arr[center] > key:
8 end = center-1
9 elif arr[center] < key:
10 start = center+1
11 elif arr[center] == key:
12 print(str(key)+'在陣列裡面的第'+str(center)+' 個位置')
13 return arr[center]
14 15 else:
16 print('沒有該數字')
17 18 if __name__ == "__main__":
19 arr = [1,6,9,12,14,16,18,23,26,34,56,765]
20 while true:
21 key = input('請輸入要查詢的數字:')
22 if key == '':
23 print('謝謝使用')
24 break
25 else:
26 binarysearch(arr,int(key))
27
python二分法查詢 Python 二分法查詢
二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...
python二分法查詢
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...
Python 二分法查詢
def binarysearch arr,value m 0 開始 n len arr 最後 while mmid m n 2 計算中間位置 if value arr mid 查詢成功,返回元素對應的位置 return mid elif value arr mid 在後面一半元素中繼續查詢 m mi...