Алгоритмы и структуры данных [2022]
proglib.academy
Степан Мацкевич
Знание алгоритмов и структур данных поможет пройти техническое собеседование любой сложности при устройстве на работу, а также перейти на позиции уровня middle и выше.
- Погрузитесь в теорию структур данных и научитесь решать сложные алгоритмические задачи.
- Научитесь применять алгоритмы и структуры данных при разработке программ.
- Сможете браться за сложные проекты и повышать чек за свою работу.
1. Junior-разработчикам и недоджунам
- Курс предназначен для тех, кто уже имеет базовые навыки в любом объектно-ориентированном языке программирования.
- Вы освоите как теоретический, так и практический материал.
- Сможете выйти на новый уровень, получить повышение и больше зарабатывать.
- Подтянете свои знания по теме алгоритмов и структур данных.
- В курсе теории совсем немного, преобладает практика.
- Каждый урок включает в себя множество примеров.
- В конце – домашнее задание.
- Вы уверенно сможете брать новые проекты или претендовать на повышение.
- Знаете один из объектно-ориентированных языков программирования (Python, Java, PHP, C++, JavaScript, C#).
- Этот курс подойдет вам, если Вы отлично разбираетесь в базовой математике.
1. Польза
Программист должен понимать принцип работы алгоритмов и уметь использовать в своих программах.
2. УдобствоПоказывают важные приемы алгоритмического подхода, которые применяются в других задачах.
3. ОпытИзучаются в университетском курсе на IT-специальностях, и часто встречаются на технических собеседованиях.
После курса вы:
- Станете понимать фундаментальные структуры данных;
- Разберетесь в составе стандартных библиотек языков программирования;
- Получите практический опыт решения сложных алгоритмических задач;
- Разберетесь в структурах данных;
- Сможете применять изученные языки при разработке программ;
- Сможете легко пройти техническое собеседование.
Блок 1 - Базовый
Модуль 1 - Введение. Производительность алгоритмов
- Знакомство с программой курса и алгоритмами.
- Способы измерения времени выполнения алгоритмов.
- О-нотация.
- Числовые алгоритмы: алгоритм Эвклида, возведения в целую степень, схема Горнера, проверка простоты, решето Эратосфена.
- Массивы.
- Указатели.
- Доступ к элементам.
- Линейный поиск.
- Двумерные массивы.
- Динамический массив.
- Бинарный поиск.
- Вставка и удаление элемента.
- Удаление нескольких элементов.
- Понятие об АТД, интерфейсе.
- Односвязные, двусвязные списки.
- Основные операции.
- Реализации на массиве.
- Реализация на списке.
- Применение.
- Понятие о пирамиде (куче), построение пирамиды.
- Извлечение максимума, добавление элемента.
- Квадратичные сортировки.
- Сортировка слиянием.
- Быстрая сортировка.
- Пирамидальная сортировка. std::sort.
- Сортировка подсчетом.
- Поиск медианы и порядковых статистик методом QuickSelect.
- Виды деревьев.
- Обходы в глубину и в ширину.
- Двоичные деревья поиска.
- Необходимость балансировки.
- АВЛ-деревья и т.д.
- Хеш-таблицы и ассоциативный доступ.
- Методы разрешения коллизий.
- Примеры жадных алгоритмов, их корректность.
- Задача о рюкзаке.
- Одномерная и двумерная динамика.
- Виды графов.
- Представление графов.
- Связность.
- Обходы в глубину и в ширину.
- Сильная связность, конденсация.
- Поиск кратчайших путей, алгоритм Дейкстры.
- Символы, кодировки, юникод.
- Поиск в строках – алгоритмы Рабина-Карпа и Кнута-Морриса-Пратта.
- Бор.
- CRC-коды, MD5, SHA.
Блок 2 - Продвинутый
Модуль 16 - Сортировки
- Шелла, быстрая, поразрядная.
- Сложные алгоритмы поиска строк.
- Редакционное расстояние.
- Балансированные деревья.
- В-деревья.
- Остовные деревья, пути, раскраски и т.д.
- Интернет и графы.
- Методы Хаффмена и Лемпель-Зива.
- Практические задачи.
- Задача коммивояжера.
Примечание: тариф Полный
Продажник
goto/post?id=8737111#post-8737111