有人可以用一个例子解释discrete binary search吗?
我在上面的链接上读到了它,并且对它是什么有一个基本的想法,但我仍然不理解代码部分以及它是如何实际实现的。
答案 0 :(得分:3)
基本上,假设
然后您可以使用二进制搜索来查找x。基本上,每次变量x
的可能间隔的一半。
要实现它,请执行以下操作:
#define EPS 1E-9
double f(double x)
{
///some monotonically increasing function on [a, b], for example f(x) = x^3:
return x*x*x;
}
double binarySearch(double C, double a, double b)
{
double low = a, high = b;
double mid;
while(abs(low-high) > EPS)
{
mid = low + (high - low) / 2;
if f(mid) < C
low = mid;
else
high = mid;
}
return mid;
}