¿Cuál es el significado del peor tiempo de ejecución de un algoritmo?

Imagínese si realmente quiere comprar una pizza y tiene 10 lugares diferentes en su ciudad. Es lunes a las 3 AM. No sabes qué lugar está abierto y no te rendirás hasta que encuentres uno.

Coges tu coche, vas al primero y está cerrado, pasa al segundo … cerrado. Cuando visitó el décimo lugar, terminó su viaje por la pizza. Puede que lo encuentres abierto o no, pero estabas deambulando por 10 lugares diferentes de la ciudad. Este es el peor de los casos. Tienes un conjunto de posibilidades y solo obtienes lo que quieres cuando te quedas sin opciones.

Ahora, llevándolo a la programación.

Tiene una matriz de 10 posiciones llenas de 9 números organizados de la manera menos valorada a la más valorada de esta manera:

10 11 30 125 150 200 300 383 777

Debe insertar el número 999 y los números deben permanecer organizados de menor a mayor. Entonces debes hacer:

999 es mayor que 10? Si.

999 es mayor que 11? Si.

999 es mayor que 30 … y así sucesivamente. Debe probar TODOS los valores hasta que encuentre que ninguno es mayor que 999. Por lo tanto, inserte 999 en la última posición. Este es el peor de los casos en el tipo de inserción.

La notación Big O de un algoritmo proporciona un límite superior en su rendimiento. Describe el comportamiento limitante.

Definición formal: f (n) = O (g (n)) significa que existen constantes positivas c y k, de modo que 0 ≤ f (n) ≤ cg (n) para todo n ≥ k. Los valores de c y k deben ser fijos para la función f y no deben depender de n.

Significa que nunca se desempeñará peor que una determinada función.

Por ejemplo, n ^ 2 = O (n ^ 3). Cuando tiene una función ejecutándose en n ^ 2, ninguna constante u otra cosa puede hacer que crezca más rápido que n ^ 3 (a menos, por supuesto, que aumente su complejidad computacional, pero no lo haremos).

Consulte la página de Wikipedia para obtener más información.

Significa que, sobre todas las entradas posibles para ese algoritmo, ese tiempo de ejecución es el tiempo (asintóticamente) más largo.

Algunos algoritmos, por su propia naturaleza, se ejecutan (asintóticamente) más rápido en algunos algoritmos y más lento en otros, lo que significa que normalmente hay un tiempo promedio de ejecución de casos. El peor de los casos es el tiempo que el algoritmo toma la entrada más lenta para él.

Por ejemplo, el algoritmo BubbleSort ordena una lista de objetos al “burbujear” los objetos extraviados en su lugar, un espacio a la vez. Para ese algoritmo, el peor caso es cuando la lista se ordena en reversa y su tiempo de ejecución es O (n²).