TeX
Data Structures 2
Projekt akademicki na przedmiot Struktury Danych II. Benchmarkuje pięć algorytmów sortowania w C dla wielu rozmiarów wejścia, a następnie generuje wykresy wydajności za pomocą Pythona/matplotlib.
Projekt akademicki z przedmiotu Struktury Danych II. Benchmarkuje pięć algorytmów sortowania w C dla wielu rozmiarów danych wejściowych, a następnie generuje wykresy wydajności za pomocą Pythona/matplotlib.

Algorytmy
| Algorytm | Przypadek średni | Przypadek najgorszy |
|---|---|---|
| Sortowanie bąbelkowe | O(n²) | O(n²) |
| Sortowanie przez wybór | O(n²) | O(n²) |
| Sortowanie przez wstawianie | O(n²) | O(n²) |
| Sortowanie szybkie | O(n log n) | O(n²) |
| Sortowanie przez kopcowanie | O(n log n) | O(n log n) |
Jak to działa
- Program w C (
main.c+sorting.c) generuje losowe tablice liczb całkowitych o rozmiarach[100, 1000, 5000, 10000, 50000, 100000], uruchamia każdy algorytm na kopii danych i zapisuje metryki dla każdego uruchomienia (zamiany, porównania, czas wykonania) do plików binarnych w katalogu./executions/. - Skrypt w Pythonie (
main.py) kompiluje i uruchamia program w C, odczytuje dane binarne i zapisuje wykresy wydajności do katalogu./graficos/.
Wymagania
- GCC
- Python 3
- matplotlib (
pip install matplotlib)
Użycie
# Uruchom benchmark + wygeneruj wykresy
python main.py
Lub uruchom tylko benchmark w C:
make
./Trabalho_Pratico_II
Wyniki
Wykresy zapisywane do katalogu ./graficos/:
relatorio_completo.png— zamiany, porównania i czas w jednym wykresietrocas_comparacao.png— zamiany dla każdego algorytmucomparacoes_comparacao.png— porównania dla każdego algorytmutempo_comparacao.png— czas wykonania dla każdego algorytmu
Struktura projektu
.
├── main.c # Program główny benchmarku
├── sorting.c # Implementacje algorytmów
├── sorting.h # Deklaracje funkcji
├── main.py # Odczytywanie danych + generowanie wykresów
├── makefile
├── requirements.txt
└── executions/ # Pliki binarne z wynikami (generowane w czasie wykonania)
