Files
SortLab/README.md
T
2026-03-05 10:35:31 +03:00

5.2 KiB
Raw Blame History

🎯 SortLab

Интерактивный визуализатор алгоритмов сортировки

C++ SFML CMake Platform License


SortLab Preview


📖 О проекте

SortLab — учебный инструмент для наглядного изучения алгоритмов сортировки. Каждый элемент массива отображается как столбик. Высота = значение. Цвет = состояние.

Программа показывает работу алгоритма в реальном времени, шаг за шагом, с подсветкой сравниваемых и переставляемых элементов, счётчиком операций и визуализацией прогресса.


🧮 Алгоритмы

# Алгоритм Время (лучшее / среднее / худшее) Память
1 🫧 Bubble Sort O(n) / O(n²) / O(n²) O(1)
2 🔍 Selection Sort O(n²) / O(n²) / O(n²) O(1)
3 🃏 Insertion Sort O(n) / O(n²) / O(n²) O(1)
4 🔀 Merge Sort O(n log n) / O(n log n) / O(n log n) O(n)
5 Quick Sort O(n log n) / O(n log n) / O(n²) O(log n)
6 🌳 Heap Sort O(n log n) O(1)
7 🐚 Shell Sort O(n log² n) O(1)
8 🔢 Radix Sort O(n·k) O(n + k)

🎮 Управление

Клавиша Действие
Space ▶️ Старт / ⏸️ Пауза
R 🔀 Перемешать массив
👣 Один шаг (в режиме паузы)
/ 🐇 / 🐢 Увеличить / уменьшить скорость
18 🔢 Выбрать алгоритм
I Справка о программе
Q 🚪 Выход

🖥️ Интерфейс

┌─────────────────────────────────────────────────────────────────┐
│ 📊 Algorithm: Quick Sort   Time: O(n log n)   Comparisons: 1.2k │  ← UI панель
├────────────────────────────────────┬────────────────────────────┤
│                                    │                            │
│         📈 Столбики массива        │   🗺️ Progress Map         │
│                                    │                            │
├────────────────────────────────────┴────────────────────────────┤
│  📉 Δ Comparisons / step  [гистограмма]                         │  ← нижняя панель
└─────────────────────────────────────────────────────────────────┘
  • 📊 Главная область — столбики с цветовой индикацией состояний
  • 🗺️ Progress Map — миниатюрная сетка всего массива, зеленеет по мере сортировки
  • 📉 Гистограмма — количество сравнений на каждом шаге (пульс алгоритма)

🎨 Цветовая схема

Цвет Состояние
🔵 Синий Обычный элемент
🩵 Голубой Сравниваемые элементы
🟠 Оранжевый Переставляемые элементы
🟢 Зелёный Отсортированный элемент

🔧 Сборка

📦 Зависимости

  • 🛠️ CMake ≥ 3.16
  • 💻 Visual Studio 2022 с компонентом Desktop development with C++
  • 🌐 Git (для FetchContent — SFML скачивается автоматически)

🚀 Установка

git clone https://github.com/your-username/SortLab.git
cd SortLab
cmake -S . -B build
cmake --build build --config Release
.\build\Release\SortLab.exe

💡 SFML 2.6 скачивается и компилируется автоматически при первой сборке. ⏱️ Первый запуск cmake -S . -B build займёт 13 минуты.


📜 Лицензия

MIT 

🎓 made for college coursework  |  built with ❤️ by kolo