¿Cómo es posible que algún algoritmo sea más rápido que cualquier otro algoritmo similar para algunos valores de la variable de entrada y más lento para otros valores?

Suponga que tiene que ir a nuestro mercado de frutas desde su casa, en un automóvil. Y, hay 2 rutas de 5 km y 6 km para viajar al mercado de frutas.

Lo anterior son sus valores / entradas para el algoritmo.

Ahora piense en estos algoritmos:

  1. El algoritmo 1 dice, toma el camino más corto para viajar.
  2. El algoritmo 2 dice: tome la ruta de menos tráfico para viajar.

Asi que,

El algoritmo 1 siempre toma una ruta de 5 km, ya que es la ruta más corta.

El algoritmo 2 toma una ruta de 5 km o una ruta de 6 km , dependiendo de lo que tenga menos tráfico en esas 2 rutas, en ese momento.

Como puedes ver,

El automóvil que sigue el Algoritmo 1 podría ser más lento ya que no considera el tráfico.

El auto que sigue el Algoritmo 2, por ejemplo, usando un rastreador GPS o Google Maps, casi siempre será el más rápido, ya que toma menos ruta de tráfico.

En otras palabras,

Cuando 5 km tiene menos tráfico, ambos autos llegan al mercado de frutas al mismo tiempo.

Cuando 5 km tiene más tráfico, el automóvil que sigue el algoritmo de la ruta más corta se mueve más lento debido al tráfico, en este momento la ruta de 6 km con menos tráfico podría ser rápida, por lo que el automóvil que sigue el algoritmo 2 que tiene en cuenta el tráfico será más rápido.

Espero que haya ayudado.

La mejor de las suertes.

Ejemplo:

Todos sabemos que Bubble Sort O (n ^ 2) es más lento que Merge Sort O (nlogn). El ordenamiento de burbujas es más rápido que el de fusión en ciertos casos. Uno de los casos es la matriz de entrada ya está en orden ordenado. En este caso, el bucle interno del ordenamiento de burbujas no se ejecutará.

Moral:
En general, cuando resolvemos cualquier problema, todo lo que debería importarnos es la complejidad del peor de los casos. Tenemos que asegurarnos de que ninguna entrada rompa nuestro código.