itslabtime.com

資訊 · 計算機 · 演算法探索

二分搜尋與有序條件

二分搜尋在已排序的資料中比較中間值,排除不需要的一半候選。首先必須建立維持候選範圍的規則。

相關實驗:循序搜尋與二分搜尋 →
循序搜尋與二分搜尋
循序搜尋與二分搜尋實驗場景 →

意義與機制

循序搜尋依次檢查數值,二分搜尋則檢查目前區間的中間值。判斷目標值較大或較小後,可利用排序關係排除其中一側。

每次比較後,都必須保持以下條件:如果目標值存在,它就位於剩餘區間內。區間為空時,便可得出目標值不存在的結論。

關係與條件

候選人數大約隨著 n/2ᵏ 減少,因此比較次數呈對數增長。對於模擬中的無重複列表,當 n ≥ 1 時,最大比較次數可以與 ⌊log₂n⌋ + 1 進行比較。

排序的成本必須與搜尋成本分開考慮。當解決在包含重複值的列表中找到第一個和最後一個位置的問題時,必須調整停止條件。

觀察實驗中需要注意的事物

二分搜尋在每次探測時,將候選範圍減半。

排序後的整數列表沒有重複元素。 兩種方法使用相同的列表。

關鍵關係與符號

binary steps ≤ ⌊log₂n⌋ + 1

符號及公式中使用的單位
符號含義單位
n資料項數量個
k比較次數與範圍減少量次

透過範例確認

二分搜尋需要什麼?

排序列表 · 二分搜尋在每次查詢時,將候選範圍減半。

常見誤解

  • 對未排序的串列只套用中間值比較規則,無法得到正確的二分搜尋。

透過實驗探索這個概念

參考文獻

OpenStax ·《電腦科學導論》(英文)