
【計】 dichotomizing search
二分法檢索(Binary Search)是一種在有序數據集中高效查找特定元素的算法。其核心思想是通過不斷将搜索範圍減半來快速定位目标值,屬于計算機科學中的經典分治策略應用。以下從漢英詞典角度詳解其定義、原理及特點:
二分法檢索指在有序數組或列表中,通過反複将待查找區間分成兩半并排除不包含目标值的一半,逐步縮小範圍直至找到目标值或确定其不存在的方法。
Binary Search is an algorithm that efficiently locates a target value within asorted array by repeatedly dividing the search interval in half. If the target value is less than the middle element, the search continues in the lower half; otherwise, it proceeds in the upper half(來源:嚴蔚敏《數據結構》)。
确定搜索範圍的起始點(low
)和結束點(high
),通常為數組的首尾索引。
mid = (low + high) // 2
。low = mid + 1
(搜索右半區)。high = mid - 1
(搜索左半區)。當low > high
時,表明目标值不存在,返回特定标識(如 -1
)。
最優情況:$O(1)$(目标值位于中間)
最壞與平均情況:$O(log n)$,$n$為數據規模(來源:Knuth《計算機程式設計藝術》)。
適用于靜态或低頻更新的有序數據,如字典索引、數據庫查詢優化、大型遊戲分數排名系統等(來源:IEEE《算法導論》)。
二分法檢索是分治思想的典型應用:
參考資料:
- 嚴蔚敏. 數據結構(C語言版). 清華大學出版社.
- Knuth, D. E. The Art of Computer Programming, Volume 3: Sorting and Searching. Addison-Wesley.
- IEEE Xplore: "Efficient Search Algorithms in Database Systems".
- Cormen, T. H. et al. Introduction to Algorithms. MIT Press.
二分法檢索(又稱二分查找)是一種在有序數組中快速查找特定元素的算法。其核心思想是通過不斷縮小搜索範圍,将時間複雜度降至O(log n),效率遠高于線性搜索(O(n))。以下是詳細解釋:
前提條件
數組必須有序(升序或降序),且元素支持隨機訪問(如數組結構)。
操作步驟
low=0
,右邊界high=數組長度-1
)。mid = low + (high - low) // 2
(避免整數溢出)。low = mid + 1
;high = mid - 1
。low > high
(未找到目标)。假設在有序數組[2, 5, 8, 12, 16, 23, 38, 56]
中查找23
:
low=0
, high=7
→ mid=3
(值為12),因12 < 23,調整low=4
。low=4
, high=7
→ mid=5
(值為23),找到目标。若數組長度為$n$,最壞情況下比較次數為:
$$
log_2 n + 1
$$
即時間複雜度為:
$$
O(log n)
$$
如果需要代碼實現或更具體的變體(如查找邊界值),可進一步補充說明。
布爾值殘基量乘車串符號代碼停機耳蝸惡言複孔屬跟蹤預處理機關節杆黑鉛油宏聲納加速真空箱極限最大應力聚硫橡膠粘合劑勞資法庭冷凝作用零假設鱗喙白蛉漏鬥胸氯化一水五氨合高钴麥角黃素錢串狀的權責發生制的會計制度熱阻體掃描滾筒射線控制翼詩損益兩平圖忒斯拉氏電流