def
dg_find
(a, item)
:# 終止條件,當列表的長度為0,表示沒有找到元素不再遞迴
iflen
(a)==0:
return
false
# 找中間位置
mid =
len(a)//2
# 判斷中間位置是否是要查詢的值,如果是,返回true
if a[mid]
== item:
return
true
# 中間值大於item, 在中間值左邊的資料繼續按照二分法查詢
elif a[mid]
> item:
return dg_find(a[
:mid]
, item)
# 中間值小於item, 在中間值右邊的資料繼續按照二分法查詢
else
:return dg_find(a[mid+1:
], item)
def
find
(a, item)
:# 建立兩個指標指向列表的開頭和結尾
start =
0 end =
len(a)-1
# 通過不斷迴圈,去查詢列表中所有資料是否找到
# 當start指標大於end指標,表示沒有找到,就跳出迴圈
while start <= end:
# 通過指標查詢中間位置
mid =
(start + end)//2
# 判斷當前位置的元素是否是要查詢的資料
if a[mid]
== item:
return
true
# 中間值大於item,把end指標指向mid的前一位
elif a[mid]
> item:
end = mid-
1# 中間值小於item,把start指標指向mid的後一位
else
: start = mid+
1return
false
if __name__ ==
'__main__'
: a =[1
,2,3
,4,5
,6,7
,8]print
(find(a,8)
)
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 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...