一、浮點數二分演算法
1.1 撰寫浮點數二分,記住下面的內容,代碼也就游刃有余了!
(1) 首先找到陣列的中間值,mid=(left+right)>>1,區間[left, right]被劃分成[left, mid]和[mid , right],
(2) 然后通過check(mid)判斷中間值是不是滿足這個性質,保證落到區間里就對了,check是根據不同的題型撰寫的,
(3) 最后就能使用折半,縮小區間了,當認為區間已經很小的時候,比如<=10^-6,其實就找到了答案,
二、浮點數二分演算法的核心
2.1 浮點數二分的本質也是邊界
2.2 浮點數二分因為沒有整除,每次都可以嚴格的縮小一半,所以不需要處理邊界,相對簡單
三、浮點數二分演算法的代碼模板
bool check(double x) {/* ... */} // 檢查x是否滿足某種性質
double bsearch_3(double l, double r)
{
const double eps = 1e-6; // eps 表示精度,取決于題目對精度的要求
while (r - l > eps)//如果讓你保留四位小數,則eps寫成1e-6;如果是保留五位小數,則eps寫成1e-7
{
double mid = (l + r) / 2;
if (check(mid)) r = mid;
else l = mid;//不需要處理邊界了
}
return l;
}
查看更多
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/90032.html
標籤:其他
上一篇:學習災難
