適用條件:資料量較大,已經排好順序,所找資料存在
在有序的n個元素的陣列中查詢使用者輸進去的資料x。
演算法如下:
1.確定查詢範圍front=0,end=n-1,計算中項mid=(front+end)/2。
2.若a[mid]=x或front>=end,則結束查詢;否則,向下繼續。
3.若a[mid]x,說明待查詢的元素值只可能在比中項元素小的範圍內,則把mid-1的值賦給end,並重新計算mid,轉去執行步驟2。
# 二分法查詢view codedef binarysearch(arr, key):
# 記錄陣列的最高位和最低位
min = 0
max = len(arr) - 1
if key in
arr:
# 建立乙個死迴圈,直到找到key
while
true:
# 得到中位數
# 這裡一定要加int,防止列表是偶數的時候出現浮點資料
middle = int((min + max) / 2
) # key在陣列左邊
if arr[middle] >key:
max = middle - 1
# key在陣列右邊
elif arr[middle]
min = middle + 1
# key在陣列中間
elif arr[middle] ==key:
print(str(key) + "
在陣列裡面的第
" + str(middle) + "
個位置"
)
return
arr[middle]
else
: print(
"沒有該數字!")
data1 = [1,3,5,7,9
]binarysearch(data1,
6)
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...
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 ...
二分法查詢
前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...