Data Structures 2
TeX

Data Structures 2

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

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

Отчёт, сгенерированный кодом на Python, описывающий результаты работы алгоритмов.

Алгоритмы

Алгоритм Средний случай Худший случай
Пузырьковая сортировка 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)

Принцип работы

  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          # Драйвер бенчмарка
├── sorting.c       # Реализации алгоритмов
├── sorting.h       # Объявления функций
├── main.py         # Чтение данных + генерация графиков
├── makefile
├── requirements.txt
└── executions/     # Бинарные файлы результатов (создаются во время выполнения)