5. Алгоритмы и структуры данных
5.1. Асимптотическая сложность. O-, Ω-, Θ-нотация. Анализ времени работы алгоритмов.
5.2. Основные структуры данных: массивы, списки, стеки, очереди, хеш-таблицы, деревья (бинарные, BST, кучи), графы (списки смежности, матрица смежности).
5.3. Алгоритмы сортировки: пузырьковая, вставками, выбором, быстрая, слиянием, пирамидальная. Корректность и анализ сложности.
5.4. Алгоритмы поиска: линейный, бинарный, поиск в глубину (DFS), поиск в ширину (BFS).
5.5. Алгоритмы на графах: кратчайшие пути (Дейкстра, Флойд-Уоршелл), минимальное остовное дерево (Краскал, Прим).
5.6. Динамическое программирование. Жадные алгоритмы. Примеры задач и доказательство корректности.