TeX
Data Structures 2
Академический проект по структурам данных II. Сравнивает пять алгоритмов сортировки на C для нескольких размеров входных данных, затем генерирует графики производительности с помощью Python/matplotlib.
Академический проект по дисциплине «Структуры данных II». Сравнивает пять алгоритмов сортировки на языке C для различных размеров входных данных, затем генерирует графики производительности с помощью Python/matplotlib.

Алгоритмы
| Алгоритм | Средний случай | Худший случай |
|---|---|---|
| Пузырьковая сортировка | O(n²) | O(n²) |
| Сортировка выбором | O(n²) | O(n²) |
| Сортировка вставками | O(n²) | O(n²) |
| Быстрая сортировка | O(n log n) | O(n²) |
| Пирамидальная сортировка | O(n log n) | O(n log n) |
Принцип работы
- Программа на C (
main.c+sorting.c) генерирует массивы случайных целых чисел размеров[100, 1000, 5000, 10000, 50000, 100000], запускает каждый алгоритм на копии массива и записывает метрики каждого запуска (количество перестановок, сравнений, затраченное время) в бинарные файлы в каталог./executions/. - Скрипт на 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 # Драйвер бенчмарка
├── sorting.c # Реализации алгоритмов
├── sorting.h # Объявления функций
├── main.py # Чтение данных + генерация графиков
├── makefile
├── requirements.txt
└── executions/ # Бинарные файлы результатов (создаются во время выполнения)
