Docencia

11-09-2019

Estructuras de datos 2019/2020

Material adicional

Práctica 1

Makefile para compilar el código y generar archivos de tiempos:

SHELL=/bin/bash
CPP=$(wildcard *.cpp)
EXE=$(basename $(CPP))
# Modifica aquí para ajustar el nivel de optimización (de 0 a 3):
CPPFLAGS=-O0
DAT=tiempos_busqueda.dat tiempos_ej3.dat

.PHONY: default clean tiempos

default: $(EXE)

clean:
	rm -f $(EXE) $(DAT)

# Modifica aquí para cambiar los puntos de inicio, fin y los saltos:
inicio_busq=100
fin_busq=1000000
incremento=1000
inicio_ej3=1024
fin_ej3=1000000000
factor=2

tiempos: $(DAT)

tiempos_busqueda.dat: busqueda_lineal
	for (( i=$(inicio_busq); i < $(fin_busq); i+=$(incremento) )); do \
		cmd="./$< $$i 10000"; \
		echo -en "\r$$cmd"; \
		$$cmd >> $@; \
	done

tiempos_ej3.dat: ejercicio3
	for (( i=$(inicio_ej3); i < $(fin_ej3); i*=$(factor) )); do \
		cmd="./$< $$i 10000"; \
		echo -en "\r$$cmd"; \
		$$cmd >> $@; \
	done

Recursos

  • Big O Cheat Sheet - Chuleta con las eficiencias teóricas de las operaciones más habituales sobre distintas estructuras de datos y de algoritmos de ordenación
  • Hackerrank - Plataforma de problemas de programación para practicar
  • Aprende Programación Competitiva - Colección de manuales sobre eficiencia, estructuras de datos y algoritmos
  • VSCodium Portable - Un editor de texto avanzado (la versión libre de VS Code) listo para ejecutar sin instalar en cualquier Linux de 64 bits, recomendable traerlo a clase en un pen drive
  • Sorting Algorithms (Re-)visualized - Una serie de visualizaciones animadas de algoritmos de ordenación