Практика к курсу «Алгоритмы и структуры данных». Презентация.
Проект собирается на JDK 17. Начиная с JDK 23 javac отключает аннотационную обработку по
умолчанию — Lombok молча перестаёт генерировать код, и vol8 не компилируется. Версия проверяется
maven-enforcer-plugin, поэтому сборка на другом JDK падает сразу и с понятным сообщением.
mvn -B clean packageФаза validate прогоняет checkstyle и PMD, фаза test — JUnit 5.
| # | Раздел лекции | Модуль |
|---|---|---|
| 1 | Асимптотика и сложность | vol1/bigo |
| 2 | Линейные структуры данных | vol1 |
| 3 | Рекурсия | vol2 |
| 4 | Комбинаторика | vol9 |
| 5 | Сортировка | vol3 |
| 6 | Поиск | vol3 |
| 7 | Хеширование | vol4 |
| 8 | Графы | vol5 |
| 9 | Куча | vol6/tree/Heap |
| 10 | Система непересекающихся множеств | vol10 |
| 11 | Топологическая сортировка | vol11 |
| 12 | Остовные деревья | vol12 |
| 13 | Деревья: BST, AVL, Хаффман | vol6 |
| 14 | Динамическое программирование | vol7 |
| 15 | Строки: КМП, Рабин–Карп | vol13 |
| 16 | Конечные автоматы | vol8 |
| 17 | Лабиринт | vol_/mazes |
| 18 | Клеточный автомат | vol_/fsm |
Модуль vol_ — песочница вне программы курса: кэши, Raptor-коды, машина Поста, простые числа,
пул объектов, текстовый квест.
Модуль heroes тоже вне программы и состоит из двух приложений: heroes/game — пошаговый бой на сетке со Swing-интерфейсом, в двух режимах — против компьютера и по сети; heroes/web — чат-комнаты и комнаты боя на Spring Boot. Общего кода у них нет: игра говорит с сервером по HTTP.
Чего в примерах не хватает и что стоит добавить — в docs/EXAMPLES.md.
Модуль commons — общий счётчик операций, которым разделы меряют фактическое число шагов.
Часть ошибок в коде оставлена намеренно и помечена в JavaDoc («В коде есть ошибка», «Найдите здесь
ошибку», «Почему реализация не оптимальна?»). Рядом с каждой лежит @Disabled-тест, описывающий
ожидаемое поведение: снимите @Disabled, добейтесь зелёного теста.