Изменения

Перейти к: навигация, поиск

Троичный поиск

41 байт добавлено, 22:25, 12 июня 2013
м
Псевдокод
=== Псевдокод ===
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))
r right = b
else
l left = a
}
return (left + right) / 2
end
 
=== Время работы ===
119
правок

Навигация