Алгоритмы для разработчиков. Часть 3 из 4

66 участников

О чём курс

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

В материале подробно рассматриваются темы, критически важные для глубокого понимания вычислительной сложности:

  • работа с деревьями, включая сбалансированные деревья поиска и кучи;
  • алгоритмы на графах, от обхода в глубину и ширину до поиска кратчайшего пути;
  • техники динамического программирования для одномерных и двумерных задач;
  • жадные алгоритмы и их применение;
  • продвинутая работа со строками, включая использование структуры данных бор и префикс-функции.

Курс предназначен для разработчиков, которые хотят перестать полагаться на интуицию при написании кода и научиться осознанно выбирать подходящие инструменты для обработки данных. Итогом обучения станет умение оценивать временную и пространственную сложность алгоритмов и эффективно оптимизировать программные решения.

Программа обучения

  • Введение в алгоритмы (20 часов)
    • Понятие сложности алгоритма. O-нотация. Оценка времени исполнения программы.
  • Основные структуры данных (20 часов)
    • Массив, связный список, стек, очередь. Сложность операций вставки, поиска и удаления. Представление данных в памяти. Пространственная сложность алгоритма.
  • Рекурсия (5 часов)
    • Понятие рекурсии. Принцип «разделяй и властвуй». Бинарный поиск.
  • Сортировки (15 часов)
    • Квадратичные сортировки. Сортировка слиянием. Быстрая сортировка. Линейная сортировка подсчётом.
  • Хеш-функции и хеш-таблицы (20 часов)
    • Абстракция отображения. Понятие и свойства хеш-функции, примеры. Структура данных хеш-таблица. Коллизии и способы их разрешения.
  • Деревья (20 часов)
    • Структура данных дерево. Сбалансированные деревья поиска. Структура данных куча. Пирамидальная сортировка.
  • Графы (20 часов)
    • Определение графа, способы представления в памяти. Обход графа в глубину и в ширину. Компоненты связности. Алгоритмы поиска кратчайшего пути. Минимальное остовное дерево.
  • Динамическое программирование (15 часов)
    • Определение, одномерные и двумерные задачи. Динамическое программирование по подотрезкам. Динамическое программирование по подмножествам.
  • Жадные алгоритмы (5 часов)
    • Понятие жадного алгоритма, область применения. Примеры, доказательство корректности алгоритма.
  • Алгоритмы на строках (20 часов)
    • Префикс-функция. Подстроки, префиксы и суффиксы. Поиск шаблона в строке. Наивный алгоритм. Структура данных бор.
Складчина создана 23 августа 2021 г. · описание обновлено 23 марта 2026 г.

Другие материалы школы 12

ЯП Яндекс Практикум Все материалы
358 ₽ 10 400 ₽