二分查找(Binary Search)是一種在有序數組中查找特定元素的搜尋算法。其核心思想是將數組不斷對半分割,比較目標值與當前中間元素的大小,以此縮小搜尋範圍。二分查找的時間複雜度為O(logN),其中N為數組長度,這使得它在大數據集上的表現非常高效。
二分查找算法的步驟如下:
定義搜尋範圍:設定兩個指針left和right,分別指向數組的第一個元素和最後一個元素。
比較中間元素:計算中間元素的索引mid,並將目標值與中間元素進行比較。
調整搜尋範圍:
如果目標值等於中間元素,返回中間元素的索引。
如果目標值小於中間元素,更新right為mid-1,繼續在左半部分搜尋。
如果目標值大於中間元素,更新left為mid+1,繼續在右半部分搜尋。
重複步驟:如果left不大於right,繼續執行步驟2,直到找到目標值或搜尋範圍為空。
二分查找的優點包括查找速度快,適用於有序數據集。然而,它的缺點是要求輸入的數據必須是有序的,且通常適用於線性存儲結構如數組,在鍊表中的效率較低。
二分查找的一個典型套用場景是在實現高效的搜尋功能時,例如在排序的資料庫或數組中查找特定數據。此外,二分查找也常用於其他算法中,以最佳化搜尋效率。