Skip to content

Repository files navigation

Java CI with Maven

Алгоритмы и структуры данных

Практика к курсу «Алгоритмы и структуры данных». Презентация.

Сборка

Проект собирается на 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, добейтесь зелёного теста.

Releases

Packages

Used by

Contributors

Languages