- Lista Doblemente Ligada
- Merge Sort
- Arreglo
- Quick Sort
- Selection Sort
- Búsqueda binaria
- Pila
- Cola
- Árbol Binario Completo
- Búsqueda por amplitud
- Montículo Mínimo
- Heap sort
- Árbol Binario Ordenado
- Búsqueda por profundidad
- En orden
- Post orden
- Pre orden
- Búsqueda por profundidad
- Árbol Rojinegro
- Árbol AVL
- Diccionario
- Conjunto
- Gráfica con Diccionario de Adyacencias
- Búsqueda por profundidad
- Búsqueda por amplitud
- Trayectoria mínima
- Dijkstra
- Caché LRU (Usado Menos Recientemente)
Compilar:
$ mvn compile
Pruebas unitarias:
$ mvn test
Programa de demostración:
$ mvn install
...
$ java -jar target/practicas.jar N
Donde N
es un número entero.
Pueden clonar la práctica con el siguiente comando:
$ git clone https://github.com/srp-mx/edd-2023-2-edd.git
La documentación generada por JavaDoc la pueden consultar aquí:
mvn javadoc:javadoc
...
xdg-open target/site/apidocs/index.html
- Introducción (semana 1, sesión 1)
- Genéricos (semana 1, sesión 2)
- Tipos genéricos
- Borradura de tipos
- Acotamiento de tipos
- Empacamiento y desempacamiento
- Iteradores (semana 2, sesión 3)
- El operador for-each
- Colecciones (semana 2, sesión 3)
- Listas (semanas 2-3, sesiones 4-5)
- Definición de listas
- Algoritmos para listas
- Iteradores para listas
- Complejidad computacional (semana 3, sesión 6)
- La notación de O grandota
- Complejidades en tiempo y en espacio
- Arreglos (semana 4, sesión 7)
- El polinomio de redireccionamiento
- Arreglos y genéricos
- Pilas y colas (semana 4, sesión 8)
- Algoritmos de la clase abstracta
- Algoritmos para pilas
- Algoritmos para colas
- Lambdas (semanas 4-5, sesiones 8-9)
- Lambdas y funciones de primera clase
- Clases internas anónimas
- Lambdas en Java con interfaces funcionales
- Ordenamientos (semanas 5-6, sesiones 9-10)
- Ordenamientos en arreglos
- Algoritmo SelectionSort
- Algoritmo QuickSort
- Manteniendo arreglos ordenados
- Ordenamientos en listas
- Algoritmo MergeSort
- Manteniendo listas ordenadas
- La razón para ordenar colecciones
- Ordenamientos en arreglos
- Búsquedas (semana 6, sesión 11)
- Búsquedas en arreglos
- Búsquedas en listas
- Árboles binarios (semanas 6-7, sesiones 12-13)
- Definición de árboles binarios
- Propiedades de árboles binarios
- Implementación en Java
- Algoritmos para árboles binarios
- Aprovechando referencias no utilizadas
- Árboles binarios completos (semana 7, sesión 13-14)
- Definición de árboles binarios completos
- Recorriendo árboles por amplitud
- Acciones para vértices de árboles binarios
- Algoritmos para árboles binarios completos
- Árboles binarios ordenados (semana 8, sesiones 15-16)
- Definición de árboles binarios ordenados
- Recorriendo árboles por profundidad
- DFS pre-order
- DFS post-order
- DFS in-order
- Algoritmos para árboles binarios ordenados
- Complejidades en tiempo y en espacio
- Árboles rojinegros (semanas 9-10, sesiones 17-19)
- Definición de árboles rojinegros
- Algoritmos de los árboles rojinegros
- Algoritmo para agregrar
- Algoritmo para eliminar
- Árboles AVL (semana 10, sesión 20)
- Definición de árboles AVL
- Algoritmos de los árboles AVL
- Algoritmo de rebalanceo
- Gráficas (semana 11, sesiones 21-22)
- Definición de gráficas
- Propiedades de gráficas
- Implementación en Java
- Recorridos en gráficas
- BFS en gráficas
- DFS en gráficas
- Algoritmos para gráficas
- Implementaciones alternativas de gráficas
- Montículos mínimos (semana 12, sesiones 23-24)
- Definición de montículos mínimos
- Acomodando hacia arriba y hacia abajo
- Acomodando hacia arriba
- Acomodando hacia abajo
- Implementación en Java
- Algoritmos para montículos mínimos
- Algoritmo HeapSort
- Montículos de arreglos
- Algoritmo de Dijkstra (semana 13, sesiones 25-26)
- Definición de trayectoria de peso mínimo
- Implementación en Java
- Algoritmos para gráficas con pesos en las aristas
- Algoritmo de trayectoria mínima
- Algoritmo de Dijkstra
- Reconstruyendo trayectorias
- Pesos con matrices de adyacencias
- Funciones de dispersión (semana 14, sesiones 27-28)
- Colisiones en funciones de dispersión
- Implementación en Java
- Cascando huevos
- Función de dispersión XOR
- Función de dispersión Bob Jenkins
- Función de dispersión de Daniel J. Bernstein
- Funciones de dispersión para diccionarios
- Diccionarios (semana 15, sesiones 29-30)
- El arreglo del diccionario
- Implementación en Java
- Algoritmos para diccionarios
- Complejidades en tiempo y en espacio
- Implementaciones alternas de diccionarios
- Conjuntos (semana 16, sesión 31)
- Implementación en Java
- Algoritmos para conjuntos
- Otros usos de conjuntos
- Mejorando gráficas (semana 16, sesión 31)
- Modificaciones al código
- Conclusiones (semana 16, sesión 32)