Я знаю, что временная сложность обычного троичного поиска составляет O(log3 n), но что, если он используется с числами с плавающей запятой?
Пример: какова временная сложность этого блока этого блока кода?
double s = -100, m1, m2, e = 100, EPS = 1e-6;
while(abs(s-e) > EPS)
{
m1 = s + (e - s) / 3;
m2 = e - (e - s) / 3;
if(condition)
e = m2;
else
s = m1;
}
Все, что он делает, это ищет действительное число между -100 и 100, но временная сложность изменяется, когда изменяется точность переменной EPS
.
Примечание. Log_3(n) = log(n)/log(3) — в O(log n) основание не имеет значения.