¿Cómo analizar la complejidad de caso promedio de un algoritmo? ¿Hay alguna fuente para aprenderlo paso a paso de lo básico?

Puede encontrar fácilmente un lugar para aprender con Google o Youtube.

Pero resumidamente, es algo intuitivo. Eche un vistazo al código y vea cómo funciona. Si tenemos que hacer 3 comparaciones y 2 cálculos, el costo sería 3co + 2ca (en términos generales).

Al comparar dos algoritmos, generalmente solo tomamos en cuenta los costos exponenciales (el costo es logN, N, N ^ 2, N ^ 3 …). Esto se debe a que después de que N alcanza un valor, un algoritmo siempre tendrá más costo que el otro.

Es decir, si un algoritmo cuesta (n ^ 3) + (n ^ 2) y el otro es (n ^ 2) +30, el segundo es (en comparación) más barato porque n ^ 3> n ^ 2.

Saber para qué se usará su código también es bueno para hacer una comparación más precisa (hágalo cuando sea posible). En ese ejemplo, si N es Siempre <4, el primero es más barato (hacer los cálculos). Pero si no lo sabemos con certeza, asumimos que el segundo es el más barato.