Я проходил ниже ссылку enter link description here и через ответы Я хотел рассчитать сложность времени ниже предлагаемого кода. Я играл с довольно многими значениями, и количество шагов колеблется между 23 (даже для небольших значений) и говорит 50 для реальных больших значений. Как мне рассчитать сложность времени для кода ниже - любые указатели?вычислить сложность времени алгоритма квадратного корня
float val, low, high, mid, oldmid, midsqr;
// Set initial bounds and print heading.
low = 0; high = mid = val; oldmid = -1;
// Keep going until accurate enough.
while (fabs(oldmid - mid) >= 0.00001)
{
oldmid = mid;
// Get midpoint and see if we need lower or higher.
mid = (high + low)/2;
midsqr = mid * mid;
if (mid * mid > val)
{
high = mid;
printf("- too high\n");
}
else
{
low = mid;
printf("- too low\n");
}
}
Посмотрите на алгоритм. Он повторяет эту процедуру: учитывая диапазон, рассмотрим середину этого диапазона и на основе результата уменьшите рассматриваемый диапазон до верхней половины или нижней половины оригинала. Это должно быть хорошо знакомо всем, кто изучает анализ сложности. –
Это двоичный поиск (0, высокий), его сложность - log_2 (высокий * 100000) = O (log_2 (высокий) - log_2 (точность)). – akappa