1. 程式人生 > >演算法之二分查詢

演算法之二分查詢

二分查詢是我接觸的第一個演算法。
但是其實我們最早接觸的關於二分查詢就是那個猜數字的遊戲。
也就是,生成一百以內的隨機數,給n次機會猜。
想必大家都知道一定是每次一半一半的猜才能快。
二分法原理不難,優點是查詢次數少,速度快,效能好。
缺點則是要求必須是有序表。

下面直接上模板程式碼:
截圖是為了不希望直接複製貼上..還是要自己敲比較好
(截圖是為了不希望直接複製貼上..還是要自己敲比較好…雖然二分是最簡單的演算法,但是自己敲的習慣還是要有…以後複雜的演算法每個人的模板都不一樣,還是要自己探索適合自己的…orz)

給一個暑假集訓的例題。

ac程式碼:

這裡寫圖片描述

可以說是模板題了。

ac程式碼:這裡寫圖片描述
這裡寫圖片描述

另外算是兩個小技巧吧:
1.對於middle比較穩妥的定義是
middle=left+(right-left)/2;

2.STL二分查詢函式
binary_search(a,a+n,num)
a是陣列。num是要查詢的數,比較簡單就不贅述了。

//紀念一下我第一個接觸的演算法。演算法確實很難,很燒腦。但是堅持下去,慢慢對著模板刷題,早晚會有那麼一瞬間突然就都明白了。我覺得一天能學一個演算法就很好。萬事開頭難,加油。

//這一生,總要為你愛的人拼一次