廢話不多說,直接上**...
#用遞迴實現2分查詢的演算法,# 以從列表 a = [1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,107]
# 查詢指定的值
def cal(li, item): #傳入列表和需要查詢的值
print(li, item)
if not li: #每次傳入都要為乙個新生成的列表
return false
mixid = len(li) // 2 #獲取列表長度每次對半分後進行判斷大小
if item == li[mixid]:#如果傳入的值正好相等,則返回真
return true
elif li[mixid] > item:#如果中間值大於傳入值,則在列表左邊
return cal(li[:mixid], item)
else:
return cal(li[mixid+1:], item)如果中間值小於傳入值,則在列表右邊
a = [1, 3, 4, 6, 7, 8, 9, 11, 15, 17, 19, 21, 22, 25, 29, 33, 38, 69, 107]
print(cal(a, 6))
print(cal(a, 2))
二分法的用法
二分法實現原理 二分查詢可以解決已經排好序陣列的查詢問題 只要陣列中包含target 即要查詢的值 那麼通過不斷縮小包含target陣列的範圍,最終就可以找到它。其演算法流程如下 開始,範圍覆蓋整個陣列。將陣列的中間項與target進行比較,如果target比陣列的中間項要小,則到陣列的前半部分繼續...
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基礎 遞迴與二分法
一般換做巢狀函式換做自己執行自己 1,必須有乙個明確的結束條件 2,每次進入新一層遞迴時,問題規模比上次遞迴都應有所減少 3,效率不高,層次過多導致棧溢位 所以,要寫遞迴函式主要邏輯必需不斷呼叫,而遇到if 條件必須終止 二分法 data 1,3,6,7,9,12,14,16,17,18,20,21...