¿Cuál es la mejor manera de aprender algoritmos para programadores?

Cada programador tiene su propia mejor manera de aprender algoritmos. Te contaré mi mejor manera en la que empecé a aprender.

Leer un libro es muy importante porque cada tema se describe en detalle en un libro, pero en videos / tutoriales todo se describe en breve.

Para los libros que recomendaré.
1: Introducción a los algoritmos: Charles E. Leiserson, Clifford Stein, Ronald Rivest y Thomas H. Cormen
2: Algoritmos (4ª edición): Robert Sedgewick, Kevin Wayne
3: El manual de diseño de algoritmos: Steven Skiena

Algunos recursos en línea:
Tutoriales de ciencia de datos
Algoritmos – GeeksforGeeks

Recursos para practicar:
1: http://lightoj.com/volume_problemcategory.php
2: El mundo de los siete – Métodos para resolver
3: A2 juez en línea
4: HackerRank
5: CodeForces

Ahora ven a los pasos:
Sigo la filosofía de ” aprender haciendo “.

Paso 1: Al principio, debe aprender la teoría de cualquier algoritmo en particular de sus libros / recursos.

Paso 2: intente implementar el algoritmo (teoría) que aprendió en el código sin mirar la implementación de otros. Después de mucho intentarlo, si no puedes implementar, toma la ayuda de otros.

Paso 3: Ahora tome un enlace de Recursos para practicar y resolver algunos problemas relacionados con el algoritmo que ha aprendido recientemente.

Para mí esta es la mejor manera de aprender algoritmos.

La mejor de las suertes. 🙂

Esta respuesta también fue publicada en mi blog personal.

Aquí está el método que seguí. Como usted es un programador, asumo que está más interesado en la aplicación que en el aprendizaje de detalles matemáticos.

Método

  1. Primero aprende la notación Big-Oh . Te da una idea aproximada de cómo se escala el algoritmo.
  2. Implementar listas enlazadas . Luego implementa pilas y colas usándolos. Una vez que lo haga, la implementación de las semánticas LIFO y FIFO será sencilla.
  3. ¿Cómo funciona la función find ()? Diferentes métodos de búsqueda.
  1. Búsqueda lineal – directa e intuitiva. Mira cada elemento en la matriz dada.
  2. Búsqueda binaria : asegúrese de que la matriz esté ordenada primero. Luego, puede reducir el tamaño del espacio de búsqueda a la mitad en cada iteración. Imagina una matriz de 1,000,000,000 de elementos. La búsqueda lineal requiere mil millones de búsquedas, mientras que la búsqueda binaria requiere entre 30 y 40 en el peor de los casos. Increíble. ¿No es así?
  • Hasta ahora podría haber usado sort () de la biblioteca. Las bibliotecas utilizan algoritmos de clasificación híbridos, diferentes métodos de clasificación según el tamaño de la entrada.
    1. Implementar la ordenación de mezcla . Es recursivo y la fusión puede ser un poco difícil al principio.
    2. Implementar ordenamiento rápido . Esto es MUY TRANQUILO para hacerlo bien porque si elige el pivote incorrecto podría terminar con un tiempo de ejecución muy malo. Así que lea acerca de la clasificación rápida aleatoria y varios métodos para elegir pivote.
    3. Implementar el montón binario y por lo tanto la ordenación del montón . Comparar con los algoritmos de clasificación de fusión y ordenación rápida.
    4. Implementar el orden de conteo y el orden de radix Aprende qué se entiende por ” género estable ” y su importancia.
  • ¿Cómo se implementan los arreglos y mapas asociativos en las bibliotecas estándar? Si nos fijamos en la biblioteca de colecciones de Java, existen dos variantes, a saber, HashSet / TreeSet y HashMap / TreeMap. ¿Qué son?
    1. Aprende e implementa árbol binario de búsqueda . Debería ser compatible con todas las operaciones de conjuntos dinámicos: inserción, búsqueda, eliminación, búsqueda de mínimo y máximo en el conjunto.
    2. Si proporciona la entrada en orden ascendente o descendente a su implementación, verá el problema. Ahora aprenda esquemas de equilibrio como el árbol rojo-negro , el árbol AVL .
    3. Implementa Hashtable y aprende los diferentes enfoques para manejar las colisiones. Entonces entenderás por qué es tan importante diseñar una buena función hash.
  • Ahora vamos a hacer un análisis de dependencia. ¿Alguna vez se preguntó qué sucede dentro de las herramientas de compilación cuando cambia algo y se reconstruyen todos los módulos que dependen de él? Se trata de gráficos. Solo imagínalo como unos pocos nodos / puntos conectados por bordes / líneas. Pueden representar ciudades y carreteras, enrutadores de red y enlaces, etc.
    1. Implementar técnicas básicas de búsqueda de gráficos: búsqueda en profundidad y búsqueda en profundidad . Jajaja Ya sabes cómo resolver un laberinto, ¿no?
    2. Implementar algoritmos de árbol de expansión mínimoPrim y Kruskal . Son sencillos e intuitivos.
    3. Implementar el algoritmo de ruta más corto de Dijkstra . También intente imprimir la ruta más corta desde algún origen a destino, además de la distancia.

    Recursos

    1. Estos pueden ser útiles para mojarse los pies.
    1. Cracking the Coding Interview Video Tutorial
    2. Resolver problemas de código de algoritmos
    3. Codechef – sección principiante
  • Coursera – Cursos de estructuras de datos y algoritmos.
    1. Algoritmos, Parte I – Universidad de Princeton | Coursera: Debo admitir que este fue el curso que me inspiró a llegar lejos.
    2. Algoritmos, Parte II – Universidad de Princeton | Coursera
    3. Algoritmos | Coursera – de la Universidad de Stanford
  • GeeksforGeeks: es muy útil, especialmente si se está preparando para una entrevista.
  • MIT Open Courseware
    1. Introducción a los algoritmos (SMA 5503)
    2. Matemáticas para ciencias de la computación: repasar las matemáticas discretas que podrían requerirse aquí.
    3. Estructuras de datos avanzadas: como dice el curso, esto es MUY avanzado y teórico.

    “Algoritmos” (y heurísticas) son términos realmente sin sentido en el vacío.

    Claro, hay algunas categorías genéricas, como buscar y ordenar, pero mis algoritmos grandes y, especialmente el desarrollo de nuevos algoritmos, son específicos de cada campo. Si está desarrollando un sistema de control de motor para automóviles, sus algoritmos tienen un aspecto muy diferente a los utilizados para el juego, las acciones, etc.).

    Si quieres hacer análisis de datos, estudias estadísticas. Si quieres programar un piloto automático, estudias ingeniería aeroespacial. Etc. Los algoritmos provienen de tu tema, ahí es donde empiezas.

    Practícalos en tu computadora. Realiza programas y resuelve problemas prácticamente en tu computadora. Intente hacer algo creativo como un sitio web totalmente solo, trabaje en todos los aspectos de la misma, la parte frontal, la parte posterior, el diseño, los gráficos, las ventanas emergentes, absolutamente todo. Cuando obtenga un don de desarrollo de software, todos estos algoritmos le resultarán naturales y no tendrá que abarrotar nada.

    1.Mira y visualiza tu básico.

    Visualización de la estructura de datos

    IDeserve – Plataforma única de aprendizaje para mejorar las habilidades algorítmicas.

    2. Lee esto

    Estructuras de datos y algoritmos simplificados : Segunda edición: – narasimha karumanchi

    3.Práctica y discute aquí.

    GeeksforGeeks | Un portal informático para geeks.

    Programación de preguntas de la entrevista | CareerCup

    LeetCode Juez en línea

    4. Participa en diferentes retos y envía tu código aquí.

    HackerRank

    HackerEarth – Desafíos de programación y trabajos de desarrollador

    Página del concurso CodeChef

    5. Prepárese para la entrevista

    Preguntas técnicas de la entrevista |

    CrazyforCode

    Consejos y trucos para la entrevista de codificación semanal – Gainlo Mock Interview BlogCoding

    Preguntas de entrevista

    Para los recursos, me gustaría ver:

    Diseño de algoritmo
    Aprender Algoritmos

    El sitio Learn Algorithms tiene un montón de metodologías básicas y avanzadas relacionadas con la programación, y el libro Algorithm Design hace eco de esto con mucho más análisis en profundidad.

    Si está comenzando, sugiero el sitio web ya que tiene muchos ejemplos prácticos para copiar y pegar con los que puede jugar. No está completamente construido, pero la mayoría de las cosas básicas están ahí.

    Hay una aplicación para que entiendas fácilmente cómo funciona el algoritmo a través de la explicación junto con el visualizador. Repaso esta aplicación para entender fácilmente cualquier algoritmo cuando es difícil rastrearlo a través del pseudo código.

    El nombre de la aplicación es Algoritmos: Explicado y Animado. Tienes que comprar algunos algoritmos que están bloqueados. Vale la pena el dinero. Darle una oportunidad.

    Aquí hay una captura de pantalla de la aplicación.

    Gracias.

    Thomas Cormen responde a:
    “Soy un novato en la programación. ¿Debo leer algoritmos?”

    Seguir:

    La respuesta de Dharmpal Chaudhary a ¿Cuáles son los mejores recursos para aprender a codificar para concursos de programación competitivos?

    Aprender teóricamente podría ser difícil. Pero encontré estos videos en un canal de youtube “Tutoriales de último minuto” y son increíbles. La mayoría de los algos importantes también se enseñan de una manera excelente … ¡Buena suerte amigo mío!

    La mejor manera que encuentro para estudiar algoritmos es aplicarlos a algunas situaciones interesantes. Debe intentar averiguar el problema que desencadenó el descubrimiento de ese tipo particular de algoritmo.