# 子問題演算法(子問題規模為 1)
def is_in_list(init_list, el):
return [false, true][init_list[0] == el]
# 分治法
def solve(init_list, el):
n = len(init_list)
if n == 1: # 若問題規模等於 1,直接解決
return is_in_list(init_list, el)
# 分解(子問題規模為 n/2)
left_list, right_list = init_list[:n // 2], init_list[n // 2:]
# 遞迴(樹),分治,合併(此處為深度優先,注意邏輯短路)
res = solve(left_list, el) or solve(right_list, el)
return res
if __name__ == "__main__":
# 測試資料
test_list = [12, 2, 23, 45, 67, 3, 2, 4, 45, 63, 24, 23]
# 查詢
print(solve(test_list, 45)) # true
print(solve(test_list, 5)) # false
python實現順序查詢和折半查詢
1 順序查詢 特點 不需要內容有序,乙個乙個查詢 缺點 查詢效率低,不適合大資料 假設資料的總個數為n,則計算複雜度為n 2 下面的程式由三個函式組成,第乙個函式是裝飾器,作用是計算函式的 執行時間 第二個函式的作用是資料的輸入,為方便直接給列表裝載i 第三個函式的作用是實現順序查詢 coding ...
Python實現二分查詢 折半查詢
我們在學習程式語言或者演算法設計的時候,總是繞不過查詢演算法和排序演算法。對於順序查詢和冒泡查詢我們應該是最熟悉的了,如果這兩個還不會,真的要加把勁兒了。剛好最近演算法老師在講分治思想,剛好二分查詢就是根據分治思想進行設計的。在有序陣列nums中查詢乙個數字x,順序查詢的方法是將陣列nums中的元素...
折半查詢 java實現
二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。author administrator public cl...