Изменения

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

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

50 байт добавлено, 10:28, 20 мая 2014
отформатирован псевдокод
=== Псевдокод ===
ternarySearchMin(f, left, right, eps) if (right - left < eps) return (left + right) / 2 a = (left * 2 + right) / 3 b = (left + right * 2) / 3 if (f(a) < f(b)) return ternarySearch(f, left, b, eps) else return ternarySearch(f, a, right, eps) end Возможен и нерекурсивный Рекурсивный вариант:
ternarySearchMin(f, left, right, eps)
while if (right - left > < eps) { return (left + right) / 2
a = (left * 2 + right) / 3
b = (left + right * 2) / 3
if (f(a) < f(b))
right = return ternarySearch(f, left, b, eps)
else
return ternarySearch(f, a, right, eps) Итеративный вариант:  ternarySearchMin(f, left, right, eps) while (right - left > eps) a = (left * 2 + right) / 3 b = (left + right * 2) / 3 if (f(a) < f(b)) } right = b else left = a return (left + right) / 2 end
=== Время работы ===
73
правки

Навигация