Algoritmos | Análisis de Algoritmos | Pregunta 18

Considere la siguiente función

 int unknown(int n) {
    int i, j, k = 0;
    for (i  = n/2; i <= n; i++)
        for (j = 2; j <= n; j = j * 2)
            k = k + n/2;
    return k;
 }

¿Cuál es el valor de retorno de la función? (PUERTA CS 2013)

(A) \Theta(n^2)
(B) \Theta(n^2Logn)
(C) \Theta(n^3)
(D) \Theta(n^3Logn) 

(A) A
(B) B
(C) C
(D) D

Respuesta: (B)
Explicación: En la siguiente explicación, ‘^’ se usa para representar el exponente:
El bucle externo se ejecuta n/2 o Theta(n) veces .
El bucle interno se ejecuta (Iniciar sesión) veces (tenga en cuenta que j se multiplica por 2 en cada iteración).
Así que la declaración «k = k + n/2;» ejecuta Theta(nLogn) veces.
La declaración aumenta el valor de k en n/2.
Entonces el valor de k se convierte en n/2*Theta(nLogn) que es Theta((n^2) * Logn).

Cuestionario de esta pregunta

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *