Алгоритмы

Алгоритмы и структуры данных на C++: сортировки, поиск, обходы, разбор классических задач с оценкой сложности. Каждый алгоритм — с реализацией, пояснением шагов и примерами применения в реальном коде.

Алгоритмы

Структуры данных для специфичных задач: куча (priority_queue), trie, union-find

Введение В завершение разбора структур данных рассмотрим три специализированные структуры, каждая решающая конкретный, узкий класс задач значительно эффективнее общих структур: кучу для эффективного доступа к минимуму/максимуму (уже использованную…

Алгоритмы

Жадные алгоритмы и их применение

Введение В отличие от динамического программирования, рассматривающего все возможные варианты решения подзадач, жадный алгоритм на каждом шаге делает локально оптимальный выбор, никогда не пересматривая его позже — в…

Алгоритмы

Динамическое программирование: концепция и практические примеры

Введение Динамическое программирование (ДП) — техника решения задач путём разбиения на подзадачи с сохранением (мемоизацией) уже вычисленных результатов подзадач, избегая повторного пересчёта одного и того же — в…

Алгоритмы

Поиск: бинарный поиск и его вариации, std::lower_bound/upper_bound

Введение Бинарный поиск как принцип, лежащий в основе поиска в сбалансированном дереве — в этой статье разберём бинарный поиск отдельно, как самостоятельный алгоритм для отсортированных линейных коллекций, и…

Алгоритмы

Кратчайшие пути: алгоритм Дейкстры и его применение в реальных задачах

Введение Как способ найти кратчайший путь по числу рёбер в невзвешенном графе — для взвешенного графа (где у разных связей разная «стоимость») нужен другой алгоритм. В этой статье…