一文快速掌握二分查詢(解題思路與基本模板)

2021-10-11 18:34:50 字數 696 閱讀 7156

二分查詢是電腦科學中最基本、最有用的演算法之一。它描述了在有序集合中搜尋特定值的過程。

二分法的精髓

每次運算可以去除一半的不符合條件的元素。很大程度的減小了時間複雜度

二分法的常用術語為

1.target目標值

2.index目標的索引

3.left、right、mid三個索引

二分法解題步驟:

1.預處理過程(將無序陣列排序成有序陣列)

2.二分查詢(找到合適的判斷條件,每次可以篩選掉一半的不符合條件的元素)

3.後處理過程(不斷查詢直到找到目標值)

二分查詢基本模板

public

intbinarysearch

(int a,

int target)

else

if(a[mid]

>target)

else

}//迴圈結束都沒有找到目標值target

return-1

;}

一般需要考慮的幾個條件:

1.初始條件:left=? right=?

2.終止條件:left總結

二分法思想雖然非常簡單,但是對細節的要求非常高。對於每次比較之後mid的值該怎樣變化需要仔細思考,很容易就會出錯而無法求出正確的值。所以這類題對於細節的把控非常重要,有時間的話之後再總結一些相關題目來實戰練習。

一文秒殺二分查詢所有題目

思想及實現 這是學演算法的入門演算法,先舉個最簡單的例子 猜數字1 我心中默念乙個數字,範圍在1 100,你每次可以猜乙個數,我會回答你大了,小了,直到猜中為止。答 比如假設要猜的數字是38,整個過程如下 猜測範圍 1,100 猜50,大了。所以比50大的都不用考慮了,包括50。猜測範圍 1,49 ...

二分查詢與快速排序

可以在在二分查詢前進行排序,提高查詢效率。qsort 快速排序,需要自定義比較函式 和bsearch 配合使用。void qsort void base,size t nitems,size t size,int compar const void const void void bsearch c...

分治專題(二分查詢與快速冪)

這個大周由於嶽老師的一句話,我對程式的認識又有了巨大的改變。人活著不能一成不變,我覺得每天只進步一點點還不夠,作為較好的一位,我就需要在相同的的時間內做更多的事情。於是,我就開始預習新知識,複習舊演算法,最近我複習了c 的二分這一塊,發現之前不會的明顯有所提高,大部分都能掌握了,比如說快速冪與二分查...