¿Cuál es la mejor forma de aprender a hacer algoritmos con un conocimiento general de C?

Para escribir cualquier algoritmo, creo que debería tener al menos una excelente comprensión de cómo funcionan exactamente los componentes básicos de los programas informáticos, como bucles y sentencias condicionales, recursiones, usos de memoria, estructuras de datos, etc. que son comunes a todos los lenguajes de programación y algoritmos. No está diseñado para un idioma específico.

Si bien la codificación siempre trata de escribir un código generalizado que debería funcionar para todas las entradas en un rango específico. Esto infiere una buena implementación lógica y, por lo tanto, buenos algoritmos, en la medida en que hay más algoritmos que la generalización, como la complejidad del espacio y el tiempo.

Si eres bueno en lo anterior, trata de aprender la mayor cantidad de algoritmos que puedas. Le dará una idea de cómo se escriben los algos y cómo se atienden los casos de esquina.

Yo mismo estoy tratando de aprender algoritmos y estructuras de datos y siguiendo un libro “Introducción a los algoritmos” de Cormen y otros. Lo que he sentido es que el libro te enseñará cómo dividir los problemas complejos en otros más pequeños y simples. También tiene toneladas de algoritmos que si aprendes podrían permitirte escribir los tuyos, aunque no es tan fácil.

Además, hay muchos cursos en línea sobre algoritmos de courseera, MIT OCW y muchos sobre YOUTUBE que se pueden usar para aprender algoritmos.

Esta respuesta no es tan sistemática, pero espero que pueda aclarar algunas de sus dudas.

Lo primero que debe hacer es ampliar y profundizar su conocimiento en C y Estructuras de datos. Debido a que muchos algoritmos de alto rendimiento tienen una implementación extensa de varios conceptos como
Estructuras de datos
Programación dinámica
Sistemas operativos
Técnicas de sincronización y muchas más.
Obtener una comprensión profunda sobre este tema facilitará su tarea.
Comience con una cosa en un punto en el tiempo no se apresure. “Cuanto más tiempo le des, más maduro será su comprensión”. Recuerde que un buen programador debe entender el sistema primero.
Luego, busque los algoritmos que todos los programadores deben saber; le dará una idea de cómo implementará los conceptos en la vida real. Ahora que está listo para escribir algoritmos optimizados, puede que no sea el mejor, pero será mejor que los algoritmos que hubiera escrito sin el conocimiento de todo esto.

Un conocimiento adicional de las matemáticas, la teoría de los números es un plus. ¡Te dará una ventaja!

Espero que ayude.

@https: //notendur.hi.is/hei2/teac…

El libro de George Polya Cómo resolverlo es un clásico absoluto en el área de un enfoque sistemático para la resolución de problemas, que está estrechamente relacionado, si no es que es exactamente equivalente al “cómo hacer algoritmos” de esta pregunta (como entiendo la pregunta, de todos modos).

Cómo resolverlo Tenía derechos de autor en 1945, antes de que las computadoras elevaran la importancia de la resolución de problemas algorítmicos a la gran importancia que tiene hoy en día. La URL anterior apunta a una segunda edición completa, escaneada y un poco aproximada, pero útil. No se me ocurre mejor respuesta a esta pregunta que decir: “Comience con este libro. Trabaje con cuidado. Siga fielmente sus excelentes consejos”. No tiene nada que decir sobre C o computadoras; tiene mucha importancia contar acerca de “… cómo hacer algoritmos …” que considero el corazón de esta pregunta.

Puede encontrar útil este curso introductorio: https://codility.com/programmers