Data Structures 2
TeX

Data Structures 2

Projeto acadêmico para a disciplina Estruturas de Dados II. Realiza testes comparativos de cinco algoritmos de classificação em C com vários tamanhos de entrada e, em seguida, gera gráficos de desempenho usando Python/matplotlib.

Projeto acadêmico para a disciplina Estruturas de Dados II. Realiza benchmarks de cinco algoritmos de classificação em C com vários tamanhos de entrada e, em seguida, gera gráficos de desempenho usando Python/matplotlib.

Relatório gerado pelo código Python descrevendo o resultado dos algoritmos.

Algoritmos

Algoritmo Caso Médio Caso Pior
Classificação por Bolhas O(n²) O(n²)
Classificação por Seleção O(n²) O(n²)
Classificação por Inserção O(n²) O(n²)
Classificação Rápida O(n log n) O(n²)
Classificação por Heap O(n log n) O(n log n)

Como funciona

  1. Programa em C (main.c + sorting.c) gera matrizes de inteiros aleatórios nos tamanhos [100, 1000, 5000, 10000, 50000, 100000], executa cada algoritmo em uma cópia e grava métricas por execução (trocas, comparações, tempo decorrido) em arquivos binários na pasta ./executions/.
  2. Script Python (main.py) compila e executa o programa em C, lê os dados binários e salva gráficos de desempenho na pasta ./graficos/.

Requisitos

  • GCC
  • Python 3
  • matplotlib (pip install matplotlib)

Utilização

# Executar benchmark + gerar gráficos
python main.py

Ou execute apenas o benchmark em C:

make
./Trabalho_Pratico_II

Saída

Gráficos salvos em ./graficos/:

  • relatorio_completo.png — trocas, comparações e tempo em uma única figura
  • trocas_comparacao.png — trocas por algoritmo
  • comparacoes_comparacao.png — comparações por algoritmo
  • tempo_comparacao.png — tempo de execução por algoritmo

Estrutura do projeto

.
├── main.c # Driver de benchmark
├── sorting.c # Implementações de algoritmos
├── sorting.h # Declarações de funções
├── main.py # Leitor de dados + gerador de gráficos
├── makefile
├── requirements.txt
└── executions/     # Arquivos binários de resultados (gerados em tempo de execução)