基礎演算法 二分

2022-07-08 11:51:11 字數 1061 閱讀 9071

二分模板

bool check(int x)  // 檢查x是否滿足某種性質

// 區間[l, r]被劃分成[l, mid]和[mid + 1, r]時使用:

int bsearch_1(int l, int r)

return l;

}// 區間[l, r]被劃分成[l, mid - 1]和[mid, r]時使用:

int bsearch_2(int l, int r)

return l;

}

唯一的區別就在於int mid = l + r + 1 >> 1;

假設 l =r-1,若mid = l+r>>1因為是下取整,所以此時mid = 2l+1>>1,mid = l若此時則行號check(mid)判斷為真,則 執行語句l = l,陷入死迴圈中。

習題:790.數的三次方根

給定乙個浮點數n,求它的三次方根。

輸入格式

共一行,包含乙個浮點數n。

輸出格式

共一行,包含乙個浮點數,表示問題的解。

注意,結果保留6位小數。

資料範圍

−10000≤n≤10000−10000≤n≤10000

輸入樣例:

1000.00
輸出樣例:

10.000000
#include#include using namespace std;

double x;

int main()

double l =0, r = x;

while(abs(l*l*l-x)>=1e-8)

printf("%lf",op*r);

}

演算法基礎 二分查詢函式 二分演算法

一 寫乙個函式binaryseach,在包含size個元素的 從小到大排序的int數a裡查詢元素p,如果找到,則返回元素下標,如果找不到,則返回 1。要求複雜度o log n int binarysearch int a,int size,int p return 1 複雜度o log n 二 寫乙...

演算法基礎 二分查詢

二分查詢主要是為了解決 在一堆數中找出指定的數 這類問題。要想二分查詢,這一堆數必須有以下特徵 至於是順序遞增還是遞減,是否存在相同的元素都不要緊。include include using namespace std int binarysearch int array,int low,int h...

二分查詢 基礎演算法

今天有童鞋問到我二分的題,一時間竟然忘了二分怎麼敲了。就特麼你這記性還是別搞acm了 二分的思想 在乙個公升序的序列中查詢乙個元素,普通的想法是直接從頭擼到尾然後判斷,但是當資料很多的時候這中普通的思想絕壁會超時 不過不要小看這種普通的從頭到尾去遍歷的思想,有的時候,它很暴力 二分不同,它是每次去把...