¿Cuál es el mejor libro para un joven de 15 años para iniciar algoritmos, que tiene un buen historial matemático y quiere ir al IOI?

¡Buenos días!

Recomiendo encarecidamente la serie “Para Dummies” para la mayoría de los principiantes.

Al iniciarse en el mundo de la programación y los algoritmos, vale la pena pensar por un momento para qué quiere utilizar ese conocimiento y capacidad.

Hay más lenguajes de programación de los que se puede (razonablemente) incluso saber, y mucho menos poder codificar. (Si desea algunos ejemplos oscuros, recomiendo echar un breve vistazo a “Chief” o “Garden” o incluso “Espacio en blanco” solo para tener una idea de las locuras que algunos programadores pueden crear.)

Cada lenguaje de programación es bueno en algunas cosas, promedio a lo sumo y horrible para otras.
Elegir el idioma correcto para comenzar le ayudará a asegurarse de que realmente se divierta escribiendo sus primeros programas y experimentando con todo el concepto.

Los lenguajes de programación más utilizados para los programadores son Java, C ++, Visual Basic y posiblemente Delphi.
De estos recomendaría Java ya que es un buen generalista entre los idiomas y tiene un montón de buenos tutoriales por ahí.

Aquellos que enumeré arriba son lenguajes “compilados”. Eso significa que escribes el código que pulsas un botón que convierte el código en un programa. Solo entonces puedes ejecutar el programa y ver si funciona.

Pero también hay otros idiomas por ahí.

Estoy hablando de lenguajes “interpretados”. Con estos escribe el código, pulsa ejecutar y el programa intenta ejecutarse. Muchos de estos incluso admiten cambiar el código mientras se ejecuta el programa.
La ventaja obvia de los lenguajes interpretados es el ciclo mucho más rápido de codificación y prueba. La desventaja es que cualquier persona que quiera ejecutarlos debe tener instalado el intérprete (el software que hace que su código funcione como un programa). Los idiomas interpretados también tienen que convertir el código en un programa en ejecución cada vez que se ejecutan o se realiza un cambio. Eso los ralentiza. También limita la cantidad de optimización que un intérprete puede realizar automáticamente en comparación con un compilador.

Dicho esto, es muy gratificante experimentar el rápido ciclo de trabajo y el flujo de idiomas interpretados.
Un buen ejemplo de esto es Python. (Lo siento por no nombrar más idiomas, no uso mucho los idiomas interpretados).

Espero que esto te dé una idea de dónde empezar y por favor recuerda:
La codificación es la resolución de problemas.
Eso requiere pensamiento, creatividad, concentración y MUCHA paciencia.

Esté preparado para enfrentar horas de seguimiento de errores.
Pero también tendrás TONELADAS de aplicaciones divertidas para escribir esto y aquello, creando pequeñas herramientas para ayudar a tus amigos o incluso para obtener la aplicación móvil que siempre quisiste pero nunca encontraste.

Tengan fondos programados y espero que les guste y lleguen a amarlos.

Atentamente
Uwe Hentschel

Recomiendo Sedgewick.
Algoritmos (4ª edición): Robert Sedgewick, Kevin Wayne: 9780321573513: Amazon.com: Libros
La tercera edición de Algorithms (edición C ++) fue el primer libro de algoritmos que he leído. Creo que era de tu edad o posiblemente más joven. Es un libro muy accesible en mi opinión, mucho más que CLRS.

Cualquier libro, de verdad.

Siempre y cuando no te detengas en un solo libro, estarás bien.