二分檢索用途及複雜性 二分搜尋技術的時間複雜度

2021-10-16 21:56:18 字數 707 閱讀 7804

二分搜尋法,它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用o(log n)完成搜尋任務。

在電腦科學中,二分搜尋(英語:binary search),也稱折半搜尋(英語:half-interval search)、對數搜尋(英語:logarithmic search),是一種在有序陣列中查詢某一特定元素的搜尋演算法。

搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。

如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

二分搜尋法的應用極其廣泛,而且它的思想易於理解,但是要寫乙個正確的二分搜尋演算法也不是一件簡單的事。第乙個二分搜尋演算法早在2023年就出現了,但是第乙個完全正確的二分搜尋演算法直到2023年才出現。

bentley在他的著作《writing correct programs》中寫道,90%的計算機專家不能在2小時內寫出完全正確的二分搜尋演算法。

問題的關鍵在於準確地制定各次查詢範圍的邊界以及終止條件的確定,正確地歸納奇偶數的各種情況,其實整理後可以發現它的具體演算法是很直觀的。

複雜度計算

時間複雜度:二分搜尋每次把搜尋區域砍掉一半,很明顯時間複雜度為o(log n)。(n代表集合中元素的個數)

空間複雜度:o(1)。雖遞迴形式定義,但是尾遞迴,可改寫為迴圈。

二分檢索用途及複雜性 二分搜尋演算法

介紹 在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程...

二分檢索歸納

二分法搜尋並不是什麼很高深的演算法,任何時候需要編寫乙個這樣的演算法恐怕都不是難事,甚至c 標準庫里已經有相關數但是當現在的我看到二分法搜尋的 仁需要想一想是否確實是這樣寫的時候,我就知道我應該要寫一篇這樣的總結,把我對二法這個說難不難的問題梳理歸納一下,這樣即使以後忘記了也能夠比較完整地回憶起這方...

Java 二分搜尋 二分查詢

對陣列元素進行逐個查詢顯然是費時費力的工作,我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.接下來我們介紹一種方法 二分搜尋法 二分搜尋法充分利用了元素間的次序關係.基本思想 將n元素分成個數大致相同的涼拌,取arr n 2 與欲查詢的x做比較,如果 下面將採用兩種方式 遞迴 非遞迴 來展示二...