Semana 2 - astalberto/AnalisisDeAlgoritmo GitHub Wiki

Eficiencia de algoritmos

Lo que importa no es solo que el algoritmo funcione, sino qué tan rápido y qué tantos recursos usa. Para eso usamos la notación O grande:

O(1): súper rápido, no importa el tamaño de la entrada

O(n): crece lineal con la entrada

O(n2): ya se empieza a poner pesado con datos grandes

O(logn): muy eficiente (como en búsqueda binaria)

O(nlogn): típico de buenos algoritmos de ordenamiento (merge, quick)

O(n!): imprácticos si n crece (evitar)

Se analiza el peor caso, aunque también se puede utilizar el mejor y el promedio.

Caso medio

No siempre se da el peor caso. A veces el algoritmo se comporta mejor en promedio. El caso medio es básicamente “¿cuánto tarda en una entrada cualquiera?”, asumiendo que todas son igual de probables. Ej: búsqueda lineal

En la práctica sirve para comparar algoritmos que son malos en el peor caso pero buenos en promedio.

image

Cada paso es proporcional al tamaño del subarreglo: O(n) , con n=r−p+1