二分搜尋演算法

在計算機科學中 ， 二分查找算法  ， 也稱折半搜索算法  、 對數搜索算法  ， 是一種在有序數組中查找某一特定元素的搜索算法 。 搜索過程從數組的中間元素開始 ， 如果中間元素正好是要查找的元素 ， 則搜索過程結束 ； 如果某一特定元素大於或者小於中間元素 ， 則在數組大於或小於中間元素的那一半中查找 ， 而且跟開始一樣從中間元素開始比較 。 如果在某一步驟數組爲空 ， 則代表找不到 。 這種搜索算法每一次比較都使搜索範圍縮小一半 。 二分查找算法在下是對數時間複雜度的 ， 需要進行次比較操作 （ 在此處是數組的元素數量 ， 是大O記號 ， 是對數 ） 。 二分查找算法使用常數空間 ， 對於任何大小的輸入數據 ， 算法使用的空間都是一樣的 。 除非輸入數據數量很少 ， 否則二分查找算法比線性搜索更快 ， 但數組必須事先被排序 。 儘管一些特定的 、 爲了快速搜索而設計的數據結構更有效 （ 比如哈希表 ） ， 二分查找算法應用面更廣 。 二分查找算法有許多種變種 。 比如可以提升在多個數組中對同一個數值的搜索的速度 。 分散層疊有效的解決了計算幾何學和其他領域的許多搜索問題 。 將二分查找算法拓寬到無邊界的列表 。 二叉搜索樹和B樹數據結構就是基於二分查找算法的 。