Si una función tiene 2 bucles for dentro (no anidados), ¿bigOh sigue siendo O(n) para toda la función?

Tener diferentes bucles dentro de una función no hace que BigOh se multiplique, ¿verdad?

Ejemplo:

function() {
    for(int i = 0; i < n; i++) {
        //logic here
    }

    for(int i = 0; i < n; i++) {
        //logic here
    }
}

preguntado el 12 de junio de 12 a las 21:06

3 Respuestas

Esto está bastante bien discutido (es decir, referencia general), pero sí, tiene razón, la función que tiene en su pregunta sería O (n).

Técnicamente O(2n) que se reduce a O(n)

Respondido el 12 de junio de 12 a las 21:06

Sí, sigue siendo O(n) porque tendrías O(n+n) que es O(2n) pero podemos ignorar el 2 porque tiene un efecto insignificante. pero si tuviste

for (...){
  for(...){
    //code here
  }
}

Entonces sería O(n^2)

Respondido el 12 de junio de 12 a las 21:06

¿Qué sucede si el número de iteraciones en ambos bucles es diferente? Por ejemplo, se itera el primer ciclo m veces y el segundo se itera n tiempos donde n>>m. - santobedi

Consulte esta publicación sobre el desbordamiento de pila que proporciona una explicación de por qué es O (N).

https://stackoverflow.com/a/5872270/2441441

contestado el 23 de mayo de 17 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.