二分查找是一種在有序數組中查找特定元素的算法,其時間複雜度為O(log n),其中n為數組長度。這種算法通過不斷將搜尋範圍減半來高效地查找元素。下面是最基本的二分查找模板,適用於大多數情況:
初始化。左指針L設定為數組的起始位置,右指針R設定為數組的結束位置。進入循環,循環條件為L <= R。
計算中間元素索引。mid = (L + R) / 2,使用整數除法或位運算計算中間位置。
比較中間元素與目標元素。如果中間元素等於目標元素,返回該索引。如果中間元素大於目標元素,更新R = mid - 1,縮小搜尋範圍到左半部分。如果中間元素小於目標元素,更新L = mid + 1,縮小搜尋範圍到右半部分。
結束條件。如果循環結束仍未找到目標元素(即L > R),表示目標元素不存在於數組中。
為什麼使用閉區間[L, R]?使用閉區間可以確保每次疊代中搜尋範圍不為空,通過包含左右邊界,可以在搜尋過程中覆蓋所有需要考慮的元素。為什麼是L <= R?这个条件确保了搜索范围不为空,当左指针L大于右指针R时,意味着搜索范围已经被缩小到一个空范围,即不存在目标元素。因此,这个条件允许我们在搜索范围不为空时继续进行查找。