119
правок
Изменения
м
r right = b
l left = a
→Псевдокод
=== Псевдокод ===
ternarySearchMin(f, lleft, rright, eps) if (r right - l left < eps)
return (left + right) / 2
a = (left * 2 + right) / 3
b = (left + right * 2) / 3
if (f(a) < f(b))
return ternarySearch(f, lleft, b, eps)
else
return ternarySearch(f, a, rright, eps)
end
Возможен и нерекурсивный вариант:
ternarySearchMin(f, lleft, rright, eps) while (r right - l left > eps)
{
a = (left * 2 + right) / 3
b = (left + right * 2) / 3
if (f(a) < f(b))
else
}
return (left + right) / 2
end
=== Время работы ===