Permítanme aclarar algunas cosas, están interesados en la notación big-O, esto significa límite superior . En otras palabras, está bien contar más pasos de los que realmente hace. En particular, puede modificar el algoritmo para
...
for (j = 0; j < n; j++)
...
Entonces tienes dos bucles anidados, cada bucle se ejecuta veces, lo que te da un límite superior deO ( n 2 )norteO(n2)
Por supuesto, le gustaría tener una buena estimación para el límite superior. Entonces, para completar, queremos determinar un límite inferior. Esto significa que está bien contar menos pasos. Entonces considera la modificación
for (i = n/2; i < n; i++)
for (j = 0; j < n/2; j++)
sum++;
Aquí, realizamos solo algunas de las iteraciones de bucle. Nuevamente tenemos dos bucles anidados, pero esta vez tenemos iteraciones por bucle, lo que muestra que tenemos al menos adiciones. En este caso, denotamos este límite inferior asintótico por . Como el límite inferior y el superior coinciden, incluso podemos decir que es un límite asintótico estrecho, y escribimos .n 2 / 4 Ω ( n 2 ) n 2 Θ ( n 2 )n/2n2/4Ω(n2)n2Θ(n2)
Si quieres saber más, lee aquí .