Si tengo un ciclo dentro de otro ciclo, pero sé que el ciclo interno solo se ejecutará una vez, ¿este algoritmo seguirá siendo O (n ^ 2)?
For i = 1 to n do
For j = 1 to i do
If (i==j) do
For k = 1 to n
{Do stuff}
El ciclo muy interno se ejecutará como máximo 1 vez, ya i
que solo será igual j
una vez por iteración del segundo ciclo. ¿Sigue siendo n ^ 3?
fuente
No, los bucles anidados no significan automáticamente que su algoritmo sea O (n ^ k). La unidad básica de trabajo en su ejemplo es
{Do stuff}
, por lo que debe contar cuántas veces se ejecutará a medida quen
aumente. Ni siquiera necesita elj
bucle, ya que solo cuenta desde 1 hastai
y no hace nada hasta que llegai
. Solo en esa iteración realmente funciona, por lo que su código de ejemplo es O (n ^ 2).fuente