mirror of
https://github.com/koloideal/SortLab.git
synced 2026-06-10 02:15:31 +03:00
3305379e69d6185d4ae6b93a8d865ee808a689b3
🎯 SortLab
⚡ Интерактивный визуализатор алгоритмов сортировки
📖 О проекте
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 |
🔀 Перемешать массив |
→ |
👣 Один шаг (в режиме паузы) |
↑ / ↓ |
🐇 / 🐢 Увеличить / уменьшить скорость |
1 — 8 |
🔢 Выбрать алгоритм |
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займёт 1–3 минуты.
📜 Лицензия
MIT
🎓 made for college coursework | built with ❤️ by kolo
Languages
C++
84%
PowerShell
11.5%
CMake
2.2%
Inno Setup
2%
Just
0.3%
