¿Cuál es la complejidad temporal de la siguiente función fun()? Suponga que log(x) devuelve el valor de registro en base 2.
C++
void fun() { int i, j; for (i = 1; i <= n; i++) for (j = 1; j <= log(i); j++) cout << "GeeksforGeeks"; } // This code is contributed by SHUBHAMSINGH10.
C
void fun() { int i, j; for (i = 1; i <= n; i++) for (j = 1; j <= log(i); j++) printf("GeeksforGeeks"); }
Java
static void fun() { int i, j; for (i = 1; i <= n; i++) for (j = 1; j <= log(i); j++) System.out.printf("GeeksforGeeks"); } // This code is contributed by umadevi9616
Python3
import math def fun(): i = 0 j = 0 for i in range(1, n + 1): for j in range(1,math.log(i) + 1): print("GeeksforGeeks") # This code is contributed by SHUBHAMSINGH10.
C#
static void fun() { int i, j; for (i = 1; i <= n; i++) for (j = 1; j <= log(i); j++) Console.Write("GeeksforGeeks"); } // This code is contributed by umadevi9616
Javascript
const fun() { let i, j; for (i = 1; i <= n; i++) for (j = 1; j <= Math.log(i); j++) document.write("GeeksforGeeks"); } // This code is contributed by SHUBHAMSINGH10.
La complejidad temporal de la función anterior se puede escribir como θ(log 1) + θ(log 2) + θ(log 3) + . . . . + θ(log n) que es θ(log n!)
Orden de crecimiento de ‘log n!’ y ‘n log n’ es lo mismo para valores grandes de n, es decir, θ(log n!) = θ(n log n). Entonces, la complejidad temporal de fun() es θ(n log n).
La expresión θ(log n!) = θ(n log n) se puede derivar fácilmente siguiendo la aproximación de Stirling (o la fórmula de Stirling) .
log n! = n*log n - n = O(n*log(n))
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Fuentes:
http://en.wikipedia.org/wiki/Stirling%27s_approximation
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA