Cómo preparar estructuras de datos y algoritmos desde cero

Esta es una pregunta general que un novato a menudo enfrenta cuando ingresa al campo de la programación. Trataré de mantener mi respuesta lo más elaborada y comprensible posible.

Esta lista consta de estructuras de datos y algoritmos en orden creciente de dificultad. He agregado lo que actualmente puedo recordar. Lo actualizará si es necesario. He proporcionado enlaces para recursos de aprendizaje.

  1. Complejidad del tiempo (análisis asintótico): para comprender las implementaciones de estructuras de datos y algoritmos, los diversos trucos involucrados y un mejor análisis del rendimiento de los algoritmos es una buena comprensión del análisis asintótico. Enlaces: mycodeschool, Algorithms – GeeksforGeeks (Lea el análisis de algoritmos)
  2. Arreglos: mycodeschool, Estructura de datos de matriz – GeeksforGeeks, Tutorial de estructura de datos: Matriz
  3. Strings: Estructura de datos de cadena – GeeksforGeeks, C ++ Strings, Java String Tutorial
  4. Retroceso y recursividad: mycodeschool, Introducción a la recursión, Parte 1, Introducción a la recursión: Parte 2, Recursión – GeeksforGeeks, Algoritmos – GeeksforGeeks
  5. Clasificación: mycodeschool, Algoritmos – GeeksforGeeks, Khan Academy
  6. Teoría de números: teoría de números para programación competitiva – GeeksforGeeks, teoría básica de números-1 Tutoriales y notas | Matemáticas | HackerEarth, Basic Number Theory-2 Tutoriales y notas | Matemáticas | HackerEarth, Teoría de los números – III – Boris Sokolov
  7. Divide y vencerás: Algoritmos – GeeksforGeeks
  8. Búsqueda lineal y búsqueda binaria: mycodeschool, Algorithms – GeeksforGeeks, Binary Search – topcoder
  9. Listas vinculadas: Estructura de datos de la lista vinculada – GeeksforGeeks, mycodeschool
  10. Pilas: mycodeschool, Estructura de datos de pila – GeeksforGeeks
  11. Colas: mycodeschool, Estructura de datos de cola – GeeksforGeeks
  12. Árbol binario: mycodeschool, Estructura de datos del árbol binario – GeeksforGeeks
  13. Árbol de búsqueda binaria: mycodeschool, Estructura de datos del árbol de búsqueda binaria – GeeksforGeeks
  14. Montones: mycodeschool, estructura de datos del montón – GeeksforGeeks
  15. Hashing: mycodeschool, estructura de datos de hash – GeeksforGeeks
  16. Unión de conjuntos disjuntos: estructuras de datos de conjuntos disjuntos, https://www.hackerearth.com/prac…,
  17. Gráficos: mycodeschool, estructura de datos gráficos y algoritmos – GeeksforGeeks
  18. Árboles de segmento: consulta mínima de rango y ancestro común más bajo, un enfoque simple para segmentar árboles
  19. Trie: Uso de Tries – topcoder, Trie (Árbol de palabras clave) Tutoriales y notas | Estructuras de datos | HackerEarth
  20. Manipulación de bits: Algoritmos – GeeksforGeeks, un poco de diversión: diversión con bits
  21. Algoritmos codiciosos: mycodeschool, conceptos básicos de algoritmos codiciosos Tutoriales y notas | Algoritmos | HackerEarth, Algoritmos – GeeksforGeeks
  22. Programación dinámica: mycodeschool, Algoritmos – GeeksforGeeks, Introducción a la programación dinámica 1 Tutoriales y notas | Algoritmos | HackerEarth, desmitificando la programación dinámica – freeCodeCamp, programación dinámica – de principiante a avanzado
  23. Árbol indexado binario (BIT): árboles indexados binarios, archivos de árbol indexado binario – GeeksforGeeks, Fenwick (indexado binario) Tutoriales y notas | Estructuras de datos | HackerEarth, implementación de C ++ de estructura de datos BIT / Fenwick Tree
  24. Algoritmos de búsqueda de patrones: Conceptos básicos de manipulación de cadenas Tutoriales y notas | Algoritmos | HackerEarth
  25. Matriz de sufijos y árbol de sufijos: estructuras de datos avanzadas – GeeksforGeeks, Tutoriales y notas sobre matrices de sufijos | Estructuras de datos | HackerEarth, Suffix Trees Tutoriales y notas | Estructuras de datos | HackerEarth

Solo leer tutoriales nunca te ayudará a largo plazo. Practicar tantas preguntas como sea posible es imprescindible. Al principio, puede intentar preguntas de nivel más fáciles en hackerearth y hackerrank. Posteriormente, puede proceder a resolver problemas en este enlace: Juez de Esfera en línea (SPOJ). Resolver problemas en orden creciente de número de usuarios. Si encuentra que el nivel del problema es demasiado ingenuo, omita algunos problemas. No es necesario resolver todos los problemas hasta ya menos que esté aprendiendo.

Recientemente codechef ha comenzado el programa de certificación en DS y algo. Hay muchos buenos recursos mencionados allí también. Enlace: Prepararse | CodeChef

¡¡Todo lo mejor!!

En el siguiente texto, los algoritmos y la estructura de datos marcados en negrita son muy importantes. Aprenda cada algoritmo / estructura de datos con su complejidad de tiempo y espacio , estable , en su lugar y donde sea útil .

Que estudiar

Paso 0:

  • Comprender sobre punteros en C o C ++, estructuras o clases
  • Aprenda a calcular el peor de los casos , el mejor de los casos, las complejidades promedio de los casos

Paso 1 :

  • Aprenda algunos algoritmos básicos de clasificación junto con su caso de uso y complejidad de tiempo.
  • Ordenamiento de burbuja
  • Tipo de inserción
  • Tipo de selección
  • Aprenda algoritmos de búsqueda junto con la complejidad del tiempo.
    • Búsqueda lineal
    • Búsqueda binaria

    Paso 2 :

    • Apilar
    • Cola
    • Lista enlazada individual (Insertar en el frente, atrás, en el medio; Eliminar en el frente y en el medio)
    • Lista doble vinculada
    • Lista circular vinculada

    Paso 3 :

    • Aprenda los siguientes enfoques en algoritmos
    • Divide y vencerás (algunos ejemplos son el orden de fusión , el orden rápido , la búsqueda binaria)
    • Método codicioso ( mochila , algoritmo de Prim, algoritmo de Kruskal, Dijkstra, Bellmanford )
    • Programación dinámica ( mochila 0/1, problema de vendedor ambulante , cambio de moneda )
  • Retroceso ( problema de N Queens )
  • Paso 4 :

    • Árbol binario
    • Árbol de búsqueda binaria
    • Altura de un árbol
    • Transversal del árbol
    • BFS
    • DFS
  • Buscando un elemento
  • Árbol AVL
  • Hashing
  • dado que no ha mencionado los detalles de su sucursal, supongo que no es del departamento de informática si fuera del enfoque de fondo cs habría sido completamente diferente para usted.

    ahora, en lo que respecta a scratch, puede visitar cualquiera de los sitios web de programación que considere como se menciona en otras respuestas o puede buscar cursos de estructura de datos que están disponibles de forma gratuita en sitios web como coursera, udemy, udacity, mitopencourseware, etc. proporcionarle un certificado al final de su sesión.

    Espero que esto te satisfaga.

    Utilice el sitio web geeksforgeeks, allí se proporcionan todos los algoritmos conocidos y también puede aprender las estructuras de datos.