Вот алгоритм которого время работы я хочу, чтобы вычислить:Выясните время работы рекурсивного алгоритма (мастер-Therorem)
T(n) = {
c0 * n, if n <= 20
T(roundUp(n/4)) + T(roundUp(5/12 * n + 3/2)) + c1*n, if n > 20
}
п является частью положительных натуральных чисел, c0 и c1 константа ,
Вот алгоритм в Java-коде:
public static void main(String[] args) {
for (int i = 20; i < 100; i++) {
System.out.println("i: " + i + " : " + rec(i, 1, 1));
}
}
public static int rec(int n, int c0, int c1) {
int res = 0;
if (n <= 20) {
res += c0 * n;
} else {
double temp = n/4d;
double temp2 = n * (5/12d) + (3/2d);
res += rec((int) Math.ceil(temp), c0, c1) + rec((int) Math.ceil(temp2), c0, c1) + c1 * n;
}
return res;
}
Я ищу подход или объяснение пример.
Выбирает меня. Большое спасибо. Можете ли вы рассказать мне, как я могу написать время работы следующим образом: T (n) ∈ Θ (f (n)) Итак, я ищу правильный f (n) – Snelfie
Его k, не снимая фиксированных значений : T (n) = log_2 (20)/log_2 (5/12) + log_2 (n)/log_2 (12/5), а f (n) - lg (n) или log_2 (n) –
, так что это правильно : T (n) ∈ Θ (log_2 (n))? – Snelfie