二分查找

  1. 二分搜索(英語:binary search)是一種在有序數組中查找某一特定元素的搜索算法。搜索過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大於或者小於中間元素,則在數組大於或小於中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數組爲空,則代表找不到。這種搜索算法每一次比較都使搜索範圍縮小一半。

  2. 時間複雜法爲O(log)的目前所學算法中爲二分法莫屬,而且,在一系列的其他算法諸如排序等,因爲二分的思想而常使得其時間複雜度降爲O(nlogn),而一般情況下是O(n*n)。
    然而,二分法雖然高效,但很具有侷限性,用於二分查找的序列必須具有如下特徵:
    1)存儲在數組中,在鏈表中就不能實現二分查找了。
    2)序列有序。

  3. 二分查找的缺陷:
    二分查找的效率令人嚮往,但固有的缺陷亦也使人惱火,首先它要求是數組,其次還要求有序,在對元素進行刪除增加操作時很耗時,時間複雜度爲O(n),而一種好的辦法是使用二叉查找樹,它能在O(nlogn)內構建樹,也能在O(logn)內查找目標。

Leetcode中的二分題目
https://blog.csdn.net/u013007900/article/details/53363571

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章