Aprendiendo algoritmos eficientes
Hasta ahora me he concentrado principalmente en cómo diseñar correctamente el código, hacerlo lo más legible posible y lo más fácil de mantener posible. Así que siempre elegí aprender sobre los detalles de programación de nivel superior, como las interacciones de clase, el diseño de API, etc.
Algoritmos que nunca encontré realmente interesantes. Como resultado, a pesar de que puedo encontrar un buen diseño para mis programas, e incluso si puedo encontrar una solución a un problema dado, rara vez es la más eficiente.
¿Existe una forma particular de pensar sobre los problemas que lo ayude a encontrar una solución tan eficiente como sea posible, o es simplemente una cuestión de práctica y / o memorización?
Además, ¿qué recursos en línea puede recomendar que le enseñen varios algoritmos eficientes para diferentes problemas?