Se eu tiver um loop dentro de outro loop, mas sei que o loop interno será executado apenas uma vez, esse algoritmo ainda será 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}
O loop interno será executado no máximo 1 vez, pois i
será igual apenas uma j
vez por iteração do segundo loop. Ainda é n ^ 3?
fonte
Não, loops aninhados não significam automaticamente que seu algoritmo é O (n ^ k). A unidade básica de trabalho no seu exemplo é
{Do stuff}
, portanto, você precisa contar quantas vezes isso será executado à medida quen
aumenta. Você nem precisa doj
loop, pois conta apenas de 1 ai
e não faz nada até chegari
. Somente nessa iteração ele realmente funciona, portanto seu código de exemplo é O (n ^ 2).fonte