¿Cuál es la forma más fácil / intuitiva de aprender sobre algoritmos y estructuras de datos?

Hace algunos años le hice esta pregunta a uno de mis maestros de CS. Aquí está la respuesta que obtuve:

“Codifique una biblioteca en C / C ++ que contenga los algoritmos que desee. ¿Conocer un algoritmo de clasificación divertido? ¡Codifícalo! ¿Quieres hacer vudú elegante basado en listas vinculadas? ¡Codifícalo! Crecerá como crecerás como programador. Podrá usarlo cuando lo desee, ya que solo contendrá código de su propia creación “.

Hice lo que dijo y durante los 3 años siguientes lo usé para muchos proyectos universitarios, en algún momento reduje significativamente el tiempo de desarrollo: mientras que los otros tuvieron que reescribir todo el código que tenían de proyectos anteriores y luego depurarlo nuevamente. porque los idiomas cambiaron, solo tuve que cargar mi biblioteca y usarla. Y ningún maestro podría objetar porque:

  1. Todo fue MI código.
  2. la mayoría de las veces, la carga dinámica de funciones desde un dll no estaba explícitamente prohibida. Cuando fue así, pude usarlo como referencia para probar lo que tenía que codificar.

El único momento en que no pude fue porque el proyecto se centró en subprocesos múltiples y había escrito todo allí con un solo subproceso.

Así que aquí está mi consejo:

Comience a trabajar en su algoritmo personal / biblioteca de estructuras. ¡Hazlo en C / C ++ / Rust (cualquier cosa que se pueda empaquetar como .so / .dll), lo que quieras y sigue usándolo y mejorándolo!

Advertencia: ¡piense en multihilo lo antes posible!

Práctica práctica práctica..

y no solo codifique las soluciones … entienda lo que está haciendo el algoritmo. Elija lápiz y papel, extráigalo … escríbalo en papel y luego codifíquelo.

Va a ser lento al principio, pero es mejor entender qué están haciendo 20 algoritmos que engloban a 100 de ellos

Utilizándolos y si es necesario escribiéndolos.

¿Quieres saber cómo funciona un algoritmo de clasificación? Escribe uno.

¿Quieres saber cómo funciona una lista vinculada? Implementar uno.

Podrías pasar horas leyendo sobre su trabajo y pensar que los entiendes, pero nunca sabes cuándo y cómo debes usarlos. Y probablemente olvide todo lo que aprendió dos semanas después.

Implementar un tipo o una lista vinculada usted mismo no es difícil, y al final realmente comprenderá cómo funcionan y probablemente retendrá ese conocimiento durante algún tiempo.

More Interesting

¿Cuáles son las piezas más llamativas del arte algorítmico?

¿Podemos aplicar Ford-Fulkerson a un gráfico de múltiples fuentes y sumideros múltiples?

¿Qué tipo de algoritmo de Machine Learning usarías para segmentar a tus clientes en múltiples grupos?

¿Cuál es la forma más rápida de encontrar divisores de enteros grandes?

¿Cuáles son los componentes o algoritmos de subsistema mejor diseñados en Linux?

Cómo saber si un algoritmo es [matemática] O (n) [/ matemática], [matemática] O (2n) [/ matemática] o [matemática] O (n ^ 2) [/ matemática]

¿Qué es más importante, aprender múltiples lenguajes de programación o practicar algoritmos?

¿Cuál es el enfoque para resolver el problema # 168 en el Proyecto Euler (por supuesto, no la fuerza bruta)?

Trabajo muy duro para estudiar 13 horas al día durante más de 7 meses, pero todavía no puedo mejorar mi estructura de datos y habilidades de algoritmos, ¿qué debo hacer?

¿Se puede demostrar que es imposible volver a un entero inicial mayor que uno si aplica un algoritmo de multiplicar por tres y agregar uno cuando es impar y dividir por dos si es par?

Cómo llegar a la lógica para construir un método de impresión inversa que imprima los nodos en una lista vinculada usando un enfoque recursivo usando Java

¿Es CodeChef la opción correcta para practicar problemas algorítmicos hoy en día?

¿Qué algoritmos se pueden usar para el cifrado JWT?

¿Cómo funciona la ordenación por fusión en C ++?

¿Puedo diseñar una estructura de datos tipo pila que haga popMin () en tiempo O (1)?