Data Structures 2
TeX

Data Structures 2

Академічний проект з Data Structures II. Порівнює ефективність п'яти алгоритмів сортування на C для різних розмірів вхідних даних, а потім генерує графіки продуктивності за допомогою Python/matplotlib.

GitHub|

Академічний проект для предмету Структури даних II. Проводить тестування п'яти алгоритмів сортування на C для різних розмірів вхідних даних, а потім генерує графіки продуктивності за допомогою Python/matplotlib.

Звіт, згенерований кодом Python, що описує результати алгоритмів.

Алгоритми

Алгоритм Середній випадок Найгірший випадок
Bubble Sort O(n²) O(n²)
Selection Sort O(n²) O(n²)
Insertion Sort O(n²) O(n²)
Quick Sort O(n log n) O(n²)
Heap Sort O(n log n) O(n log n)

Як це працює

  1. C-програма (main.c + sorting.c) генерує випадкові масиви цілих чисел розміром [100, 1000, 5000, 10000, 50000, 100000], запускає кожен алгоритм на копії, і записує метрики за кожним запуском (обміни, порівняння, затрачений час) у двійкові файли у каталозі ./executions/.
  2. Python-скрипт (main.py) компілює та запускає C-програму, читає двійкові дані і зберігає графіки продуктивності у ./graficos/.

Вимоги

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

Використання

# Запустити тестування + генерувати графіки
python main.py

Або запустити лише C-тестування:

make
./Trabalho_Pratico_II

Вихід

Графіки збережені у ./graficos/:

  • relatorio_completo.png — обміни, порівняння та час у одній діаграмі
  • trocas_comparacao.png — обміни за алгоритмом
  • comparacoes_comparacao.png — порівняння за алгоритмом
  • tempo_comparacao.png — час виконання за алгоритмом

Структура проекту

.
├── main.c          # Benchmark driver
├── sorting.c       # Algorithm implementations
├── sorting.h       # Function declarations
├── main.py         # Data reader + chart generator
├── makefile
├── requirements.txt
└── executions/     # Binary result files (generated at runtime)