Este es un recurso accesible en estructuras de datos, con implementaciones de muestra y excelentes explicaciones:
CPSC 223: Estructuras de datos y técnicas de programación.
El curso fue impartido por el Profesor James Aspnes, Director de Estudios de Pregrado del Departamento de Informática de Yale.
Tiene algunas notas fantásticas que ha creado y publicado en línea (es prácticamente un libro de texto), así como algunas tareas interesantes que te hacen probar y aplicar varias estructuras / técnicas de datos para resolver diferentes problemas.
- ¿Se puede ordenar una lista enlazada circular?
- ¿Cómo podemos verificar si un punto (digamos el origen) se encuentra en un casco convexo 6-D (o ND) y qué tan lejos está el punto de cualquiera de los lados (facetas) del casco convexo?
- Ayúdame con el problema TopCoder SRM - 599, div - I, level - 3?
- ¿Cuál es el algoritmo generador de números aleatorios más avanzado disponible ahora?
- En la visión por computadora, ¿el aprendizaje automático va a hacer obsoletos los algoritmos de aprendizaje no automático?
Vista HTML:
Notas sobre estructuras de datos y técnicas de programación (CPSC 223, primavera de 2015)
Vista de PDF: http://www.cs.yale.edu/homes/asp…
Algunos temas cubiertos incluyen los siguientes:
Notación asintótica
Pilas
Colas
Deques
Listas vinculadas
Programación dinámica / Memoization
Tablas Hash
Árboles AVL
Splay Trees
Árboles de búsqueda binaria
Muchísimo
Árboles Aumentados
Gráficos / Búsqueda de profundidad primero / Búsqueda de amplitud primero
Algoritmos aleatorizados / Estructuras de datos (Saltar listas)
Varios algoritmos de clasificación (clasificación rápida, clasificación de raíz, clasificación de fusión, clasificación de montón, etc.).
Recursividad
Las notas también tienen una cobertura fantástica del lenguaje de programación C. Así es como aprendí a programar en C.
Creo que C es un gran lenguaje para aprender Estructura de datos / Algoritmos, porque hay que tener mucho cuidado con la gestión de la memoria. También es en general un lenguaje que todo informático debería saber.
¡Asegúrate de hacer los conjuntos de problemas! Implementar estructuras de datos es cómo mejorar en la comprensión de sus usos. Es importante poder elegir las estructuras de datos apropiadas para un problema determinado y diseñar las suyas propias combinando elementos de otras estructuras de datos.
Para ser claros, este no es un curso de algoritmos, ya que se centra principalmente en las estructuras de datos. El departamento ofrece el Diseño y Análisis de Algoritmos (CPSC 365) por separado, pero este recurso debería ser muy útil para la mayoría de las entrevistas de programación, ya que aprenderá sobre la notación asintótica y los tiempos de ejecución para la mayoría de los algoritmos / operaciones relacionados con las estructuras de datos en el curso. Además, ¡no te dejes intimidar por la longitud! Si conoce C, la parte de las notas en Data Structures tiene solo 180 páginas dispersas de LaTeX, con ejemplos de código también. Una gran parte es la revisión del lenguaje C. ¡Buena suerte!
* Todo el crédito va a James Aspnes, quien creó estos materiales y los publicó en su sitio web.