二分法查詢

2022-08-15 21:18:14 字數 1001 閱讀 4374

適用條件:資料量較大,已經排好順序,所找資料存在

在有序的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。

# 二分法查詢

def 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)

view code

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 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...