/Algoritmos-y-Programacion-2-FIUBA

Este repositorio contiene los trabajos prácticos de Algoritmos y Programación 2 (FIUBA), implementados en C y Python. Los temas incluyen ordenamiento, división y conquista, árboles, hashes, heaps, grafos, manejo de memoria, y creación de TDAs.

Primary LanguageC

Algoritmos y Programación 2 - FIUBA

Este repositorio contiene los trabajos prácticos y proyectos desarrollados para la materia Algoritmos y Programación 2 cátedea Buchwald en la Facultad de Ingeniería de la Universidad de Buenos Aires (FIUBA). Los trabajos fueron implementados en los lenguajes C y Python.

Alumno:

Ian Klaus von der Heyde - 107638

Contenido de la materia

  1. Métodos de Ordenamiento (Python):

    • Implementación de algoritmos de ordenamiento comparativos (QuickSort, MergeSort, Inserción, Selección) y no comparativos (Radix Sort, Counting Sort, Bucket Sort).
  2. División y Conquista (Python):

    • Análisis e implementación de algoritmos basados en este paradigma, como MergeSort y QuickSort.
  3. Árboles (C):

    • Árboles binarios de búsqueda (BST).
    • Árboles balanceados (AVL).
    • Implementación y operaciones básicas como inserción, búsqueda y eliminación.
  4. Hashes (C):

    • Implementación de tablas de hash, funciones de hash, y manejo de colisiones (Hopscotch Hashing, Cuckoo Hashing, Hash & Displace)
  5. Heaps (C):

    • Creación de estructuras de montículos (heaps), incluyendo Heap Máximo y Heap Mínimo.
    • Aplicaciones de heaps en la creación de colas de prioridad.
  6. Grafos (Python):

    • Implementación de estructuras de grafos (matriz de adyacencia y lista de adyacencia).
    • Algoritmos de búsqueda en grafos (BFS, DFS).
    • Algoritmos de caminos mínimos (Dijkstra, Floyd-Warshall).
  7. Manejo de Memoria (C):

    • Asignación y liberación de memoria dinámica en C.
    • Optimización de la utilización de memoria en proyectos.
  8. Elaboración de TDAs en C: Diseño e implementación de Tipos de Datos Abstractos (TDAs) en C, con separación de interfaz (headers) e implementación.

    • ABB (Binary Search Tree)
    • Cola (Queue):
    • Hash:
    • Heap:
    • Lista Enlazada (Linked List):
    • Pila (Stack)

Requisitos

  • Para ejecutar los códigos en C:

    • Compilador gcc o equivalente.
  • Para ejecutar los códigos en Python:

    • Python 3.x instalado.

Instrucciones de Ejecución

C:

  1. Compilar el código:
    gcc archivo.c -o nombre_programa
    
  2. Ejecutar el script:
    python archivo.py