Практика к курсу «Алгоритмы и структуры данных». Презентация.
Проект собирается на JDK 17. Начиная с JDK 23 javac отключает аннотационную обработку по
умолчанию — Lombok молча перестаёт генерировать код, и vol8 не компилируется. Версия проверяется
maven-enforcer-plugin, поэтому сборка на другом JDK падает сразу и с понятным сообщением.
mvn -B clean packageФаза validate прогоняет checkstyle и PMD, фаза test — JUnit 5.
| # | Раздел лекции | Модуль |
|---|---|---|
| 1 | Асимптотика и сложность | vol1/bigo, vol_/prime (решето) |
| 2 | Линейные структуры данных | vol1, vol_/buffer (кольцевой буфер) |
| 3 | Рекурсия | vol2, vol_/trampoline (рекурсия без роста стека) |
| 4 | Комбинаторика | vol9, vol_/jt (Джонсон — Троттер) |
| 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-коды, машина Поста, простые числа,
пул объектов, текстовый квест. В нём же пакет ru.mifi.practice.boring — сорок алгоритмов,
которых в программе нет, разложенных по темам: неочевидные структуры, строки, графы, геометрия,
теория чисел, динамическое программирование, обработка сигналов и прикладная тройка. Список и
карта пакетов — в PLAN.md.
Модуль heroes тоже вне программы и состоит из двух приложений: heroes/game — пошаговый бой на сетке со Swing-интерфейсом, в двух режимах — против компьютера и по сети; heroes/web — чат-комнаты и комнаты боя на Spring Boot. Общего кода у них нет: игра говорит с сервером по HTTP.
Чего в примерах не хватает и что стоит добавить — в docs/EXAMPLES.md.
Модуль commons — общий счётчик операций, которым разделы меряют фактическое число шагов.
Часть ошибок в коде оставлена намеренно и помечена в JavaDoc («В коде есть ошибка», «Найдите здесь
ошибку», «Почему реализация не оптимальна?»). Рядом с каждой лежит @Disabled-тест, описывающий
ожидаемое поведение: снимите @Disabled, добейтесь зелёного теста.