簡單定義:在乙個單調有序的集合中查詢元素,每次將集合分為左右兩部分,判斷解在哪個部分中並調整集合上下界,重複直到找到目標元素。
時間複雜度:o (logn),優於直接順序查詢o(n)
查詢連續函式的寫法:
//x:待查詢的值,caculate():所要查詢的函式,在這裡單調遞增
//需保證查詢的值在區間範圍內
double low=「區間下界」,high=「區間上界」,mid;
while(high - low > 1.0e-6)
常見拓展:對於某些問題,如果答案具有特定的範圍,並且驗證答案是否成立的函式具有單調性。則可以在範圍內對答案進行二分驗證,從而快速確定答案。
ACM 學習總結報告(三)
因為還沒有學習新的知識,所以這次先不進行知識點總結了,於是想寫一些隨筆來談談這段時間做題的感悟體會吧。一 貪心演算法例題分析 做了幾個貪心演算法的題後發現這些題都大同小異,基本上都是先定義乙個結構體,把所包括的元素都放進去。然後定義乙個排序函式,根據題目要求進行排序,最後再在主函式中貪心。做的多了不...
ACM 學習總結報告(五)
一 動態規劃和貪心演算法都是一種遞推演算法,均有區域性最優解來推導全域性最優解 二 貪心最經典的例子是找錢問題,某國錢幣包含1 3 4元,如果要找6元,如何找錢會找的最少?貪心的思想是每次都拿最大的,先拿4元,再拿乙個1元,再拿乙個1元,一共是三張。每次都拿最大的就是貪心,但實際上,只需要兩張三元是...
ACM 學習總結報告(十)
遞迴演算法的含義 程式直接或間接呼叫自身的程式設計技巧稱為遞迴演算法。直接或間接呼叫自身的函式稱為遞迴函式。它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解。遞迴的基本思想 問題分解 把乙個不能或不好解決的大問題轉化為乙個或幾個小問題,再把這些小問題進一步分解成更小的小問題...