¿Cómo puedo aprender las estructuras de datos con eficacia?

Añadiendo un marco más general a las respuestas de todos:

Paso 1: Aprender la teoría y los fundamentos.

Comprender los principales temas fundamentales cubiertos en las estructuras de datos, tales como:

  • Algoritmos, Arrays, Colecciones, Análisis de complejidad, Gráficos, Hashtables, Montones, Listas enlazadas, Colas, Recursión, Buscar, Ordenar, Pilas, Árboles

Puede retirar estos sitios web para ayudar a cubrir los aspectos fundamentales:

  • www.geeks4geeks.com – explica todos los fundamentos de alto nivel
  • www.beehyve.io/data-structures: comunidad y recursos de participación colectiva para cualquier tema en CS, incluidas las estructuras de datos
    • Recursos de complejidad de tiempo
    • [BeeHyve] Time Complexity Cheat Sheet
  • https://visualgo.net/en – tiene visualizaciones de muchos algoritmos útiles

Aquí hay más escuelas que tienen clases de DS que pueden ser útiles:

  • CS 226 Algoritmos y Estructuras de Datos
  • Brown CS 16 Introducción a los algoritmos y estructuras de datos
  • Estructuras de datos Stanford CS 166
  • CMU CSE 15-211 Estructuras de datos fundamentales y algoritmos
  • Universidad de Washington en St. Louis CSE 241 Algoritmos y estructuras de datos
  • Harvard CSE 22 Data Structures
  • Michigan EECS 281 Estructuras de datos y algoritmos
  • Cornell CS 2110 OO Programación y Estructuras de Datos
  • MiT 6.006 Introducción a los algoritmos

Paso 2: mira ejemplos, aplica tu conocimiento

Usando el conocimiento que ha aprendido de las fuentes anteriores, ahora aplicaría su conocimiento a través de la práctica. Los problemas de entrevista son una buena manera de practicar estructuras de datos y algoritmos. Puedes echar un vistazo a:

  • Programación de preguntas de la entrevista | CareerCup
  • LeetCode
  • HackerRank
  • Cracking the Coding Entrevista libro

Alternativamente, puede implementar diferentes algoritmos y estructuras de datos para obtener una mejor comprensión de los fundamentos.

  • [BeeHyve] Implementaciones de diferentes estructuras de datos

Debe leer:

  • Tutorial de estructuras de datos de Topcoder
  • La biblia de los algoritmos y las estructuras de datos : CLRS – Introducción a los algoritmos: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivestbook (que puede encontrar en línea de forma gratuita).
  • Videos de conferencias de Introducción a los algoritmos del MIT y Videos de recitación de Introducción a los algoritmos del MIT
  • La biblia de entrevistas de codificación, que incluye estructuras de datos: Cracking the Coding Interview: 150 Preguntas y soluciones de programación: Gayle Laakmann McDowell
  • También recomiendo preguntas de la entrevista de programación | CareerCup por el autor del libro anterior
  • Obviamente, el tema de las estructuras de datos de Quora.

Pero, una vez que sabes algo de teoría, la práctica la hace perfecta: TopCoder, Problemset – Codeforces – Etiquetas de estructuras de datos

Solo sigue adelante y trata de resolver los problemas comenzando con los más fáciles. Como usted está interesado en las Estructuras de datos, mi consejo es que también aprenda la Programación dinámica, lo que es muy interesante de saber.

Verás el mundo de manera diferente.
Echa un vistazo a mi respuesta para que quiero aprender memoization. ¿Me puede dar algunos enlaces con problemas de spoj / topcoder / codeforces? para empezar

La mejor manera de obtener estructuras de datos es resolver tantos problemas en cada estructura de datos. Comience con estructuras de datos más simples, como matrices, listas vinculadas, pilas, etc., y luego pase a las más complejas como árboles, gráficos, intentos.

Fíjese metas, digamos, para resolver tantas preguntas en arreglos la primera semana. Cuando lea la pregunta, piense en las formas que usaría para resolver el problema y cómo codificará la solución. Si no puede encontrar la solución, mire la descripción del algoritmo para obtener una lógica básica de la solución y luego intente codificarse. En caso de que no pueda resolver el problema, mire la solución y asegúrese de que entiende la solución completamente, para todos los casos de prueba posibles. Debe comprender cómo debe comportarse la estructura de datos dada cualquier entrada, ya sea un caso de borde o una entrada regular.

Aquí hay algunos enlaces de videos de Youtube que me parecieron muy útiles:

Arrays – YouTube

Cuerdas – YouTube

Listas enlazadas – YouTube

Árboles – YouTube

Gráfico – YouTube

Programación dinámica

También puede visitar el sitio web: IDeserve

Esto tiene buenas preguntas y videos en algunas de las preguntas. Compruebe la característica de visualización de código. De esa manera, puede secar los datos de una prueba directamente en la página para comprender mejor la solución. Pero intenta resolver el problema tú mismo primero. Eso te ayudará mucho.

Aquí hay algunas preguntas:

Algunos problemas de programación dinámica:

Número de Fibonacci

Suma máxima de subarreglos

Problema de ruptura de palabras

Número total de posibles árboles binarios de búsqueda con las teclas ‘n’

Subconjunto del problema de suma

Palíndromo más corto

Palindrome Min Cut

Número mínimo de intentos para llegar desde la palabra de origen a la palabra de destino

Número mínimo de monedas para hacer cambio.

Encuentra la ruta de costo mínimo en una matriz

La subcadena palindrómica más larga

Secuencia palindrómica más larga

Encuentra la longitud de la subsecuencia creciente más larga en una matriz

Secuencia creciente más larga O (n logn)

La subcadena común más larga

La subsecuencia común más larga

Encuentra la longitud de la subsecuencia bitónica más larga en una matriz

Para imprimir el número máximo de Como usando cuatro claves dadas.

Problema de la mina de oro

Encuentra la distancia de edición mínima entre dos cadenas dadas

0-1 Problema de mochila

Distintas cadenas binarias de longitud n sin 1s consecutivos

Contar todas las decodificaciones posibles de una secuencia de dígitos dada

Encuentra el número total de formas de hacer cambios usando un conjunto de monedas dado

Establecer problema de partición | Programación dinámica

Algunos árboles y problemas de gráficos:

Previa pedido de un árbol binario

Recorrido posterior de un árbol binario

En orden de travesía de un árbol binario

Nivel de árbol binario Orden transversal

Recorrido de orden de nivel espiral de un árbol binario | Serie 1

Imprimir la vista derecha de un árbol binario

Imprima todos los nodos de un árbol binario que no tengan hermanos

Imprimir todos los caminos de la raíz a la hoja de un árbol binario

Profundidad mínima de un árbol binario

Imprimir la vista izquierda de un árbol binario

Encuentra la suma de todas las hojas izquierdas de un árbol binario.

Encuentra la profundidad del nodo de hoja impar más profundo

Compruebe si un árbol binario es un árbol binario completo o no

Compruebe si un árbol binario está completo o no

Compruebe si dos nodos son primos en un árbol binario

Compruebe si dos árboles binarios son idénticos

Compruebe si todos los nodos internos de BST tienen un solo hijo sin árbol de construcción

Convertir el árbol n-ary dado a su imagen de espejo

Convertir un árbol binario a su árbol espejo.

Imprimir vista superior de un árbol binario

Imprima la vista superior de un árbol binario utilizando el orden de nivel transversal

Imprimir vista inferior de un árbol binario

Imprima la vista inferior de un árbol binario utilizando el orden de nivel transversal

Eliminar los nodos del árbol de búsqueda binario que están fuera del rango dado

Eliminar todos los nodos que se encuentran en la ruta con una suma menor que k

Eliminar todos los medios nodos de un árbol binario dado

Imprimir árbol binario en orden vertical

Rellenar vecinos correctos para todos los nodos en un árbol binario

El ancestro común más bajo de dos nodos en un árbol de búsqueda binario

Sucesor en orden de un nodo en un árbol binario

Recupere un árbol de búsqueda binario si se intercambian las posiciones de dos nodos.

Encuentre el piso y el techo de un elemento a partir del conjunto de datos dado utilizando el árbol de búsqueda binario

Suma diagonal de un árbol binario.

Crear un árbol de búsqueda binario equilibrado a partir de una matriz ordenada

Convertir una lista ordenada de enlace doble en un árbol de búsqueda binaria equilibrada

Convertir un árbol binario en una lista doblemente enlazada

Compruebe si un árbol binario está equilibrado o no

Compruebe si un árbol binario es un árbol de búsqueda binario

Compruebe si dos árboles de búsqueda binarios son idénticos dadas sus representaciones de matriz | Conjunto 2

Compruebe si dos árboles de búsqueda binarios son idénticos dadas sus representaciones de matriz

Compruebe si un árbol binario es un subárbol de otro árbol binario en el tiempo O (n)

Compruebe si un árbol binario es un subárbol de otro árbol binario en el espacio O (1)

Árbol binario de búsqueda | Inserción y Búsqueda

Árbol binario de búsqueda | Supresión

Compruebe si un árbol binario dado es un árbol simétrico o no

Compruebe si el árbol n-ario dado es un árbol simétrico o no

Número total de posibles árboles binarios de búsqueda con las teclas ‘n’

Encuentra el tamaño de BST más grande en un árbol binario

El ancestro común más bajo de 2 nodos en un árbol binario

Encuentre la altura del árbol binario de su representación matriz matriz

Convertir árbol binario a árbol binario de búsqueda

Construye el árbol binario a partir de su representación matriz matriz

Construir árbol binario a partir de recorridos inorder y preorder

Construir árbol binario a partir de recorridos inorder y postorder

Árbol AVL | Lo esencial

Árbol AVL | Inserción

Árbol AVL | Supresión

Estructura de datos Trie | Insertar y buscar

Estructura de datos Trie | Borrar

Ajuste de patrones utilizando Trie

Coincidencia de prefijos más larga utilizando Trie

Dada una secuencia de palabras, agrupa todos los anagramas e imprímelos.

Serializar y Deserializar un árbol binario de búsqueda

Serializar y deserializar un árbol de búsqueda binario utilizando el recorrido de orden posterior

Amplia primera búsqueda en una gráfica.

Clasificación topológica de una gráfica acíclica dirigida.

Número mínimo de intentos para llegar desde la palabra de origen a la palabra de destino

Problema de círculos de amigos – Teoría de grafos

El algoritmo de ruta más corta de Dijkstra

Algoritmo de Bellman-Ford

Algunos problemas de matrices:

Algoritmo de clasificación – Selección de selección

Algoritmo de clasificación – Ordenación por inserción

Algoritmo de clasificación – Bubble Sort

Fusionar clasificación

Clasificación de panqueques

Algoritmo de clasificación – Ordenación de pila

Girar una matriz

Número de Fibonacci

Combina dos matrices ordenadas sin usar espacio adicional

Suma máxima de subarreglos

Subarreglo promedio máximo de tamaño k

Subcadena más larga con caracteres que no se repiten

Líderes en una matriz

Encontrar la longitud mínima de sub array con suma K

Búsqueda binaria en una matriz ordenada

Busca una matriz ordenada

Reorganizar los elementos en una matriz para poner los elementos positivos y negativos en orden alterno

Encuentra el siguiente número mayor usando los mismos dígitos

Siguiente elemento mayor en una matriz

Primer carácter no repetitivo en una cadena.

Encuentra el ‘n’ número más frecuente en la matriz

Encuentra el número que falta en la secuencia creciente

Encontrar duplicados en una matriz entera

Encuentra elementos comunes en ‘n’ arreglos ordenados

Encuentra un elemento pico en una matriz

Distribuir problema de chocolates

Contar las frecuencias de los elementos de la matriz en el rango de 1 a n

Encuentra todas las permutaciones de una cadena

Encuentra pivote en una matriz rotada ordenada

Encuentra un elemento en una matriz rotada ordenada

Encuentre el elemento en la matriz rotada clasificada sin encontrar pivote

Compra y venta de acciones | Parte 2

Compra y venta de acciones | Parte 1

Encuentra el índice de 0 para reemplazar para obtener la secuencia continua más larga de 1s

O (n) enfoque de tiempo para encontrar el índice de 0 para reemplazar y obtener la secuencia continua más larga de 1s

Atrapando el agua de lluvia entre torres

El problema del horizonte

Número mínimo de monedas para hacer cambio.

Encuentra la ruta de costo mínimo en una matriz

Encuentra la longitud de la subsecuencia creciente más larga en una matriz

Secuencia creciente más larga O (n logn)

Encuentra la longitud de la subsecuencia bitónica más larga en una matriz

Dada una matriz con todos los elementos distintos, encuentre la longitud de la sub-matriz más larga que tiene elementos (no en ningún orden en particular) que podrían formar una secuencia contigua

Encuentre una matriz de enteros correspondiente a la cadena que especifica las transiciones de aumento y disminución

Problema de la mina de oro

Encuentra la mediana de dos matrices ordenadas

Encuentra el elemento mayoritario en una matriz

0-1 Problema de mochila

Contar todas las decodificaciones posibles de una secuencia de dígitos dada

Encuentra el número total de formas de hacer cambios usando un conjunto de monedas dado

Encuentra sub-secuencia creciente de longitud tres con producto máximo

Encuentra sub-secuencia creciente de longitud tres con producto máximo | Enfoque optimizado

Establecer problema de partición | Recursion

Establecer problema de partición | Programación dinámica

Algunos problemas de cuerdas:

Invertir palabras en una cadena

Eliminar espacios de una cadena dada

Subcadena más larga con caracteres que no se repiten

Compruebe paréntesis equilibrados en una cadena

Evaluación de Expresión Postfix

Agrupe todos los anagramas de una determinada serie de cadenas | Serie 1

Primer carácter no repetitivo en una cadena.

Encuentra todas las permutaciones de una cadena

Problema de ruptura de palabras

Subconjunto del problema de suma

Palíndromo más corto

Palindrome Min Cut

Número mínimo de intentos para llegar desde la palabra de origen a la palabra de destino

La subcadena palindrómica más larga

Algoritmo de Manacher

Secuencia palindrómica más larga

La subcadena común más larga

La subsecuencia común más larga

Para imprimir el número máximo de Como usando cuatro claves dadas.

Encontrar secuencias de ADN repetidas de 10 letras.

Encuentra la distancia de edición mínima entre dos cadenas dadas

Distintas cadenas binarias de longitud n sin 1s consecutivos

El cálculo de matriz de sufijo de prefijo más largo en el algoritmo de coincidencia de patrones KMP.

El algoritmo de Knuth Morris Pratt para la comparación de patrones.

Algunas listas vinculadas y problemas de pila:

Fusionar dos listas enlazadas ordenadas

Invertir una lista enlazada – Recursiva

Invertir una lista enlazada – Iterativa

Invierta todos los nodos k alternativos de una lista enlazada

Encuentre el nth Node desde el final de una lista enlazada

Suma de dos listas vinculadas usando pilas

Suma de dos listas vinculadas utilizando Recursión | Serie 1

Implementación de caché LRU

Detecta un bucle en una lista enlazada y encuentra el nodo donde comienza el bucle.

Convertir una lista ordenada de enlace doble en un árbol de búsqueda binaria equilibrada

Convertir un árbol binario en una lista doblemente enlazada

Encuentra la intersección de dos listas vinculadas

Encuentre la intersección de dos listas vinculadas: O (m + n) Complejidad de tiempo y O (1) Complejidad de espacio

Pila Mínima O (1)

Espero que esto ayude.

Descargo de responsabilidad: Este es un proyecto personal mío.

Arrays: Clasificación popular y búsqueda de algoritmos

Clasificación de burbujas : uno de los algoritmos de clasificación más elementales para implementar, y también muy ineficiente. Se ejecuta en tiempo cuadrático. Un buen punto de partida para comprender la clasificación en general, antes de pasar a técnicas y algoritmos más avanzados. Una idea general de cómo funciona el algoritmo y el código para un programa en C.
Orden de inserción : otro algoritmo de ordenación de tiempo cuadrático: un ejemplo de programación dinámica. Una explicación y paso a paso de cómo funciona el algoritmo, así como el código fuente de un programa en C que realiza la ordenación por inserción.
Selección de selección : otro algoritmo de ordenamiento de tiempo cuadrático: un ejemplo de un algoritmo codicioso. Una explicación y un paso a través de cómo funciona el algoritmo, así como el código fuente de un programa en C que realiza la clasificación por selección.
Shell Sort : un algoritmo ineficiente pero interesante, cuya complejidad no se conoce exactamente.
Ordenar por fusión Un ejemplo de un algoritmo de Dividir y Conquistar. Funciona en tiempo O (n log n). La complejidad de la memoria para esto es un poco desventajosa.
Clasificación rápida En el caso promedio, esto funciona en tiempo O (n log n). Sin sobrecarga de memoria adicional, por lo que es mejor que combinar la clasificación en este sentido. Se selecciona un elemento de partición, la matriz se reestructura de tal manera que todos los elementos mayores o menores que la partición están en lados opuestos de la partición. Estas dos partes de la matriz se clasifican de forma recursiva.
Heap Sort : algoritmo de clasificación eficiente que se ejecuta en tiempo O (n log n). Utiliza la estructura de datos Heap.
Algoritmo de búsqueda binaria: algoritmo de uso común que se utiliza para encontrar la posición de un elemento en una matriz ordenada. Se ejecuta en tiempo O (log n).

Estructuras de datos básicos y operaciones en ellas.

http://www.thelearningpoint.net/… http://www.thelearningpoint.net/… http://www.thelearningpoint.net/…
Stacks Last In First Out estructuras de datos (LIFO). Como una pila de cartas de la que tomas la que está en la parte superior (que es la última que se coloca en la parte superior de la pila). Documentación de las diversas operaciones y las etapas por las que pasa una pila cuando se insertan o eliminan elementos. Programa C para ayudarlo a tener una idea de cómo se implementa una pila en el código.
Colas Primero en la estructura de datos First Out (FIFO). Al igual que las personas que esperan comprar boletos en una cola: el primero en estar en la cola, primero obtiene el boleto y deja la cola primero. Documentación de las distintas operaciones y las etapas por las que pasa una cola a medida que se insertan o eliminan elementos. C Código fuente del programa para ayudarlo a tener una idea de cómo se implementa una cola en el código.
Lista enlazada única Una estructura de datos autorreferencial. Una lista de elementos, con una cabeza y una cola; Cada elemento apunta a otro de su propia clase.
Lista de doble enlace : una estructura de datos de referencia propia. Una lista de elementos, con una cabeza y una cola; cada elemento apunta a otro de su propia clase delante de él, así como a otro de su propia clase, que está detrás de él en la secuencia.
Lista enlazada circular Lista enlazada sin cabeza y cola: los elementos apuntan entre sí de forma circular.

Estructuras de datos de árbol
http://www.thelearningpoint.net/…
Árboles binarios de búsqueda Una forma básica de estructuras de datos de árbol. Insertando y eliminando elementos en ellos. Diferentes tipos de algoritmos de recorrido de árboles binarios.
Montones : una estructura de datos en forma de árbol donde cada elemento es menor (o mayor) que el que está arriba. Formación del montón, clasificación utilizando montones en tiempo O (n log n).
Árboles de altura equilibrada : garantizar que los árboles permanezcan equilibrados para optimizar la complejidad de las operaciones que se realizan en ellos.

http: // Gráficos y algoritmos de gráficos http: //
https://sites.google.com/a/thele
http://www.thelearningpoint.net/…
Búsqueda en profundidad en primer lugar : desplazamiento a través de un gráfico mediante la búsqueda en profundidad en la que los vecinos no visitados del vértice actual se insertan en una pila y se visitan en ese orden.
Búsqueda de amplitud en primer lugar : Recorrido a través de un gráfico con Búsqueda de amplitud en la que los vecinos no visitados del vértice actual se colocan en una cola y luego se visitan en ese orden.
Árboles de expansión mínimos: algoritmo de Kruskal : encontrar el árbol de expansión mínimo utilizando el algoritmo de Kruskal, que es una técnica codiciosa. Presentamos el concepto de Union Find.
Árboles de expansión mínimos: algoritmo de Prim : búsqueda del árbol de expansión mínimo mediante el algoritmo de Prim.
Algoritmo de Dijkstra para rutas más cortas: algoritmo popular para encontrar rutas más cortas: algoritmo de Dijkstra.
Algoritmo de Floyd Warshall para rutas más cortas – Todo el algoritmo de ruta más corta: Algoritmo de Floyd Warshall
Bellman Ford Algorithm : otro algoritmo común de ruta más corta: Bellman Ford Algorithm.
Algoritmos populares en la programación dinámica

Programación dinámica Una técnica utilizada para resolver problemas de optimización, basada en la identificación y resolución de subpartes de un problema primero.
Problema de mochila integral Un problema elemental, que se usa a menudo para introducir el concepto de programación dinámica.
Multiplicación de cadena de matriz Dada una larga cadena de matrices de varios tamaños, ¿cómo se pueden paréntesis para el propósito de la multiplicación? ¿Cómo elegir cuáles comenzar a multiplicar primero?
Subsecuencia común más larga Dadas dos cadenas, encuentre la subsecuencia común más larga entre ellas.
Algoritmos de programación dinámica cubiertos anteriormente: Orden de inserción, Algoritmos de algoritmo Flohd Warshall que ya hemos cubierto, que son ejemplos de programación dinámica.

http: // Algoritmos codiciosos http: //
Casos elementales: problema de mochila fraccional, programación de tareas problemas elementales en algoritmos codiciosos – mochila fraccional, programación de tareas. Junto con el código fuente del programa C
Compresión de datos utilizando Huffman Trees Compresión utilizando Huffman Trees. Una técnica codiciosa para codificar información.

1. Tomar cursos básicos:
Coursera
Introducción a los algoritmos (SMA 5503)

2. Practica persistentemente:
Codeforces
Concurso de Programación, Concurso de Programación, Programación Informática Online.
TopCoder, Inc. – Hogar de la comunidad de desarrollo más grande del mundo

3. A veces aprende nuevas estructuras de datos avanzadas:
Estructuras de datos avanzadas (6.851)

Creo que es una buena manera de aprender las estructuras de datos.

  • Dado que las estructuras de datos y los algoritmos van de la mano , está obligado a encontrarlos juntos en un libro / curso .
  • DS & Algo generalmente es independiente del idioma , por lo que una vez que haya terminado con ellos (usando pseudo código o cualquier otro idioma), más tarde podrá convertirlo fácilmente en la tecnología que elija .
  • Aquí trataré de categorizarlo con facilidad de comprensión y contenido cubierto .

1.Libros: –

  • Fácil:
  • Estructuras de datos utilizando C por Reema Thareja.
  • Estructuras de datos de Seymour Lipschutz.

* Usar ambos juntos, son complementarios.

  • Avanzado:
  • CLRS ( Libro de referencia, wiki de DS y Algo )
  • Skienna ( Aplicación del mundo real )
  • Tannenbum ( Simple )
  • Kleinberg-Tardos (los mejores conceptos de gráficos con diferencia)
  • Adam Drozdek
  • Michael T. Goodrich y Roberto Tamassia
  • Mark Allen Weiss (Implementación Recursiva )

2. Lectura en línea: –

  • GeeksforGeeks | Un portal informático para geeks.

3. Videos: –

  • Fácil:
  • Estructuras de datos y algoritmos -IIT Kharagpur ( Básico e intuitivo )
  • Computer Sc – Estructuras de datos y algoritmos
  • Avanzado:
    • MIT 6.006 Introducción a los algoritmos, otoño de 2011 ( Parte 1 )
    • MIT 6.046J Diseño y análisis de algoritmos, primavera de 2015 ( Parte 2 )

    4. Curso completo: –

    • Intermedio:
    • Algoritmos, Parte I – Universidad de Princeton | Coursera
    • Algoritmos, Parte II – Universidad de Princeton | Coursera
  • Avanzado:
    • Algoritmos | Coursera

    No tenía experiencia previa en programación. Me presentaron a mi primer programa Hello World en el segundo semestre en la Universidad. Aprendí C como parte del plan de estudios universitario de Let Us C Book – Por Yashvant Kanetkar.

    Y luego, en las vacaciones del semestre de verano, seguí este procedimiento:

    1. Comenzó con la programación básica.
    2. Aprenda estructuras de datos básicas como matrices, listas vinculadas, pilas, colas, etc.
    3. Inicie la codificación competitiva en plataformas como codechef, codeforces, topcoder, hackerrank, SPOJ, etc. (Elija uno o dos que desee)
    4. Encontrará muchos problemas para los cuales necesita aprender algoritmos de diseño y estructuras de datos avanzadas para optimizar su código. Así que empieza a leer los editoriales en topcoder o elige cualquier buen libro como CLRS (para algoritmos) y Goodrich (para estructuras de datos).
    5. Sigue practicando y definitivamente te convertirás en un buen programador.

    ¡Aclamaciones!

    Le llevará menos de 6 meses para dominar la codificación de buenos programas. Si no me crees, mira mi perfil de HackerRank: Vineet Kumar (Vineet_007) en HackerRank

    Compre estructuras de datos y algoritmos en el libro de Java en línea a precios bajos en la India

    Estructuras de datos y algoritmos en C ++, 2ª edición

    Compre Introducción a los Algoritmos Reserve en línea a precios bajos en la India

    Si le gustó mi respuesta, le agradecería que la votara presionando el botón azul claro que se encuentra debajo.

    También puedes seguirme, a un clic de distancia

    Aprendes la estructura de datos leyendo sobre esto o tomando un curso. Los fundamentos de las estructuras de datos parecen ser sencillos. Debe centrarse en cuáles son los diferentes tipos y cómo funcionan. Las estructuras de datos no son más que una explicación teórica de los diversos tipos de datos utilizados en casi todos los programas de computadora.

    Hay un montón de contenido en YouTube que habla sobre algunos de los conceptos básicos. Además de eso, una serie de buenos libros están disponibles en Amazon. Hacer una búsqueda rápida trae una larga lista, pero Estructuras de datos y algoritmos simplificados: Estructura de datos y Rompecabezas algorítmicos, la Segunda Edición parece ser un buen libro para comenzar.

    Introduction to Algorithms CLRS ”es el mejor libro para comprender Estructuras de datos y algoritmos. Algunas personas lo llaman biblia de DS y Algo. Contiene código de ejemplo escrito en pseudo código también. Pero se pueden convertir fácilmente al lenguaje de programación.

    Si buscas preparación para la entrevista. Puede comenzar con ” Resolución de problemas en estructuras de datos y algoritmos ” escrito en varios idiomas como C, C ++, Java, C #, Python, etc. Estos libros son fáciles de seguir y están escritos para el punto de vista de la entrevista . Además, estos libros tienen el último capítulo sobre Diseño de sistemas , que también se requiere en las entrevistas.

    Los enlaces de los libros sobre amazon están abajo:

    1. Resolución de problemas en estructuras de datos y algoritmos usando C

    2. Resolución de problemas en estructuras de datos y algoritmos utilizando C ++

    3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

    4. Solución de problemas en estructuras de datos y algoritmos utilizando C #

    5. Solución de problemas en estructuras de datos y algoritmos utilizando Python

    Lea este libro: Estructuras de datos y algoritmos en C ++, 2ª edición. Este es uno muy práctico con códigos de ejemplo que puede seguir para implementar estructuras de datos. Para empezar, este es un muy buen libro y muchos programas de pregrado tienen este curso como Introducción a los algoritmos.

    Después de terminar ese libro, continúa con este: Introducción a los algoritmos. Si bien el primer libro sirve como un elemento básico para introducir algoritmos y estructuras de datos de manera práctica, este es el momento de aprender el algoritmo de manera abstracta. El último libro servirá para este propósito. (Este es uno de los mejores libros para algoritmos)

    Gracias por A2A.

    Si eres un principiante entonces-

    1. Encuentre un libro con una buena explicación (Like- Data Structures de SK Shrivastav en C).
    2. Lea una estructura de datos a fondo.
    3. Codifíquelo (guardando el libro con usted) e intente entender el código.
    4. Ahora codifícalo sin libro.
    5. Luego encuentre problemas sencillos que puedan resolverse con esa estructura de datos e intente resolverlos. Primero, será difícil para usted, vea editoriales y soluciones y luego codifique el mismo.
    6. Después de un tiempo comenzarás a desarrollar tus lógicas. http://geeksforgeeks.com es una buena plataforma para tratar problemas relacionados con estructuras de datos y también se ofrecen buenas editoriales.
    7. Resuelve tantos problemas como puedas relacionados con ese DS.
    8. Mantén la calma, ten paciencia ( recuerda que somos programadores, la paciencia es la clave del éxito ).

    Según yo, deberías aprender las estructuras de datos en el siguiente orden:

    • Apilar
    • Lista enlazada (individual, doble, circular)
    • Cola (junto con DEQUE)
    • Árbol binario
    • Árbol de búsqueda binaria
    • Montón
    • Grafico
    • Estructuras de datos avanzadas (árbol de segmentos, árbol indexado binario, Trie… .etc)

    Si tiene una comprensión básica de todas las estructuras de datos, intente resolver problemas de práctica en plataformas de codificación en línea como:

    • Juez de Esfera Online (SPOJ)
    • Concurso de Programación, Concurso de Programación, Programación Informática Online.
    • http://geeksforgeeks.com

    #Todo lo mejor

    #HappyCoding

    Consulta estos cursos:

    1. Algoritmos – Shai Simonson
    2. Estructuras de datos y algoritmos -IIT Kharagpur
    3. mycodeschool
    4. Estructura de datos y algoritmo 1
    5. MIT 6.006 Introducción a los Algoritmos, Otoño 2011

    Aquí hay enlaces a algunas conferencias de video sobre estructuras de datos

    CS 61B Data Structures, Berkeley – YouTube

    Video conferencias de Sartaj Sahni sobre Estructuras de datos y Estructuras de datos avanzadas.

    Estructuras de datos NPTEL – IIT Delhi

    Creo que deberías empezar con el libro.
    Introducción al algoritmo por Thomas H. Cormen
    Introducción a los algoritmos.
    Esto se considera como biblia por su campo.
    No empiece demasiado lento, como dedicar mucho tiempo a leer sobre estructuras básicas de datos.
    VAYA para la implementación de estructuras de datos tan pronto como lo conozca, de esta manera conservará los conceptos durante más tiempo.
    En la sección inicial, deberá tener paciencia porque la velocidad de comprensión será lenta y la velocidad de implementación será más lenta, siga intentando hasta que tenga éxito.
    He conocido a muchos desarrolladores que sabían cosas de libros, pero si tiras una cosa de su preparación, se dan por vencidos.

    En primer lugar, ¿cuál es su definición de estructuras de datos de aprendizaje?

    Si al aprender realmente te refieres a la capacidad de codificarlos bien, tengo que decir que cualquier persona con conocimientos básicos de codificación puede hacer eso.

    Personalmente, definir el aprendizaje es la capacidad de usar la estructura de datos correcta para cada problema que enfrenta, pero ¿cómo puede uno obtener tal cosa?

    En primer lugar, necesita un conocimiento básico de las notaciones asintóticas para analizar las estructuras de datos y sus operaciones comunes, como agregar o eliminar datos de uno, así que recomiendo leer las primeras 100 páginas de

    Introducción a los algoritmos .

    El segundo objetivo es aprender a codificar las estructuras de datos y sus usos generales, pros y contras.

    esta parte se basa en su lenguaje de programación preferido si le gusta java, luego intente leer Algoritmos de Robert Sedgewick pero si le gusta C ++ lea Fundamentos de estructuras de datos, tenga en cuenta que (los algoritmos incluyen tanto estructuras de datos como algoritmos, pero Fundamentos de estructuras de datos solo se trata de datos Estructuras) la lectura de uno de estos libros es suficiente para obtener una comprensión básica de las estructuras de datos, y también tratar de resolver los problemas mencionados en esos libros.

    No se olvide de resolver problemas de programación competitivos, ya que generalmente requieren una buena comprensión de las estructuras de datos.

    Primero aprenderemos los conceptos teóricos de las estructuras de datos. Elija cualquier lenguaje de programación de su elección, como C, Java, etc. Pruebe e implemente lo que haya aprendido con el lenguaje que haya elegido.

    Después de que hayas aprendido a implementar la estructura de datos, practica más y más. Sigue buscando problemas en las estructuras de datos y resuélvelos. Después de resolver optimizamos tu solución.

    Mira a tu alrededor, todo a tu alrededor será una implementación de alguna estructura de datos. Por ejemplo, personas que hacen cola, papeles apilados unos sobre otros, vagones de trenes, etc. Inspírate en tu mundo y crea una versión virtual del mismo.

    A continuación hay algunos recursos que pueden ayudarlo a aprender las estructuras de datos de manera eficiente.

    1. Introducción a los algoritmos, 3e.
    2. GeeksforGeeks | Un portal informático para geeks.
    3. Compre estructuras de datos y algoritmos simplificados en Java: Estructura de datos y rompecabezas algorítmicos, libro de segunda edición en línea a precios bajos en la India

    Si no eres fanático de los libros, te sugiero MOOCs. Coursera tiene algunos cursos en Estructuras de datos y el curso de especialización de UC San Diego es el mejor. He seguido esa especialización y la encontré muy lúcida. Tiene exámenes semanales y tareas de programación para asegurarnos de que entendemos los conceptos. Aquí está el enlace de la especialización si desea: Estructuras de datos y algoritmos | Coursera

    Puedes ir al curso CS50 de la Universidad de Harvard en edx.org. Este curso no solo lo hará comprender los algoritmos y la estructura de datos, sino que también le brindará una mejor comprensión de los conceptos avanzados de programación de computadoras.

    Alternativamente, si está buscando específicamente tutoriales de DS, pruebe los algoritmos parte 1 y parte 2 en coursera.org.

    Enlace de descarga directa de tutoriales de estructura de datos:
    Permite ‘Compartir y cuidar’ solo en jabweshare …

    Puede encontrar los mejores cursos y tutoriales de la comunidad de programación aquí: Mejores tutoriales de estructuras de datos y algoritmos votados por la comunidad de programación

    DS toma tiempo para entender, así que por favor sea muy paciente. Una vez que se haya alejado de los conceptos de DS, le ayudará mucho en su viaje de programación.

    Depende totalmente de a qué nivel quieres comenzar. Pero, en mi opinión, CLR (Introducción a los algoritmos (incluye CD-Rom): Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein: 9780072970548: Amazon.com: Libros) es un recurso muy bueno. Cubre una muy buena variedad de estructuras de datos y algoritmos. Otra buena referencia es Estructuras de datos y algoritmos: Alfred V. Aho, Jeffrey D. Ullman, John E. Hopcroft: 9780201000238: Amazon.com: Libros.

    Además, internet es siempre un buen recurso para casi cualquier cosa.