Hola
Pero no entiendo o sea el primer bucle se repite 1+2+...+(n-1)+n veces y el interior se repite n+(n-1) + ... + 2+1 veces?
Yo no lo veo así, podrías explicar un poco más.
Lo que tenemos que contar es cuantas veces se realiza la operación interna a ambos bucles (lo que llamas "algo de O(1)").
Entonces:
- Cuando \( i=0 \), el bucle interior no se realiza (la condición de fin de bucle se cumple desde el principio).
- Cuando \( i=1 \), el bucle interior realiza \( 1 \) vez la operación, para \( j=0 \).
- Cuando \( i=2 \), el bucle interior realiza \( 2 \) veces la operación, para \( j=0,1 \).
- Cuando \( i=3 \), el bucle interior realiza \( 3 \) veces la operación, para \( j=0,1,2 \).
y así hasta:
- Cuando \( i=N-1 \), el bucle interior realiza \( N-1 \) veces la operación, para \( j=0,1,2,\ldots,N-1 \).
El número total de veces que se ha realizado la operación es:
\( 0+1+2+3+\ldots+N-1 \)
¿Hasta aquí lo entiendes? En caso afirmativo lo que queda es saber o demostrar que esa suma equivale a \( \dfrac{N(N-1)}{2} \):
- Puedes verlo como la
suma de los términos de una progresión aritmética de primer término \( 0 \), úlimo \( N-1 \) y razón \( 1 \).
- Puedes probarlo directamente como te ha indicado Juan Pablo (lo que ha hecho es la prueba de esa fórmula, para \( N \) términos en lugar de para \( N-1 \); pero la idea es la misma).
- Puedes probarlo por inducción.
Entonces primero confirma que has entendido hasta la pregunta que he marcado en azul, en caso contrario pregunta que no entiendes del conteo de operaciones.
Después si lo único que te queda por entender es esta igualdad:
\( 0+1+2+3+\ldots+N-1=\dfrac{N(N-1)}{2} \)
indica si has intentado probarla por alguno de los tres caminos indicados y especifica la duda concreta que te surja.
Saludos.