Data Structures 2
TeX

Data Structures 2

Projet universitaire pour le cours « Structures de données II ». Comparaison des performances de cinq algorithmes de tri en C pour différentes tailles d'entrée, puis création de graphiques de performances à l'aide de Python/matplotlib.

Projet universitaire pour le cours « Structures de données II ». Évalue cinq algorithmes de tri en C pour différentes tailles d'entrée, puis génère des graphiques de performance à l'aide de Python/matplotlib.

Rapport généré par le code Python décrivant les résultats des algorithmes.

Algorithmes

Algorithme Cas moyen Cas le plus défavorable
Tri à bulles O(n²) O(n²)
Tri par sélection O(n²) O(n²)
Tri par insertion O(n²) O(n²)
Tri rapide O(n log n) O(n²)
Tri par tas O(n log n) O(n log n)

Fonctionnement

  1. Le programme C (main.c + sorting.c) génère des tableaux d'entiers aléatoires de tailles [100, 1000, 5000, 10000, 50000, 100000], exécute chaque algorithme sur une copie et enregistre les métriques par exécution (échanges, comparaisons, temps écoulé) dans des fichiers binaires sous ./executions/.
  2. Le script Python (main.py) compile et exécute le programme C, lit les données binaires et enregistre les graphiques de performances dans ./graficos/.

Configuration requise

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

Utilisation

# Exécuter le benchmark + générer les graphiques
python main.py

Ou exécuter uniquement le benchmark C :

make
./Trabalho_Pratico_II

Résultats

Graphiques enregistrés dans ./graficos/ :

  • relatorio_completo.png — permutations, comparaisons et temps dans un seul graphique
  • trocas_comparacao.png — permutations par algorithme
  • comparacoes_comparacao.png — comparaisons par algorithme
  • tempo_comparacao.png — temps d'exécution par algorithme

Structure du projet

.
├── main.c # Pilote de benchmark
├── sorting.c # Implémentations des algorithmes
├── sorting.h # Déclarations de fonctions
├── main.py # Lecteur de données + générateur de graphiques
├── makefile
├── requirements.txt
└── executions/     # Fichiers binaires de résultats (générés lors de l'exécution)