Если вы хотите изучить основные подходы к анализу и проектированию алгоритмов и структур данных, то быстро продвинуться в данной теме вам помогут онлайн-курсы. Обучение позволит развить навыки обоснования корректности алгоритмов, их практической реализации, теоретической и экспериментальной оценки их временной сложности.
На курсах вы научитесь работать с различными структурам данных и вариантами алгоритмов, выбирать оптимальные варианты для каждой конкретной задачи и увеличивать производительность своего кода.
Содержание
Skillbox

Алгоритмы и структуры данных для разработчиков
Чему вы научитесь?
- Освоите базовые алгоритмы
Сможете реализовывать базовые алгоритмы на массивах и разные виды алгоритмов бинарного поиска. Познакомитесь с принципами построения хэш-таблиц и способами решения проблемы коллизий хэш-функций. - Работать со структурами данных
Научитесь работать с различными структурами данных: связными списками, очередями, стэками, двусторонними очередями (деками), кучами, бинарными, B-, R- и суффиксными деревьями, а также различными видами графов. - Познакомитесь с вариантами алгоритмов
Научитесь реализовывать алгоритмы сортировки SelectionSort, QuickSort и MergeSort, сможете создавать и применять рекурсивные и жадные алгоритмы. - Поймете, как оценивать сложность алгоритмов
Научитесь оценивать сложность различных типов алгоритмов по времени и памяти. Сможете оценивать программный код и находить способы его оптимизации и ускорения.
Программа курса:
- Введение в алгоритмы
- Алгоритм бинарного поиска
- Хеш-таблицы и хеш-функции
- Связные списки
- Стек и очередь
- Основы алгоритмов сортировки
- Рекурсивные алгоритмы
- Сложность алгоритмов
- Жадные алгоритмы
- Деревья. Двоичные деревья поиска
- Деревья. Обход в ширину и глубину
- Куча (Heap)
- Бор. Суффиксное дерево. B-дерево
- Графы и рекурсивные алгоритмы
- Топологическая сортировка и неочевидные применения графов
- Алгоритмы сжатия информации
- Битовые алгоритмы
- Алгоритмы хэширования. Криптографические алгоритмы
Яндекс Практикум

Сайт: https://practicum.yandex.ru
Телефон: 8-800-700-93-29
Стоимость: вводная часть — бесплатно, 62 000р. за курс
Курс «Алгоритмы и структуры данных»
В программе курса — уроки для подготовки к алгоритмическим собеседованиям и пробное интервью с наставником. Принципы, лежащие в основе алгоритмов и структур данных, актуальны для любого стека технологий. Они не устаревают. Знание и понимание этих принципов помогает разработчикам писать более эффективный и аккуратный код.
Что нужно для обучения на курсе?
- Уверенно владеть одним из языков программирования: C++, Python, Java, Go, JavaScript, C#. Опыт промышленной разработки необязателен.
- На курсе будет много заданий с написанием кода, поэтому для прохождения понадобится ноутбук или компьютер.
- Не требуется предварительных знаний алгоритмов и структур данных, всё расскажем с нуля.
Что вас ждет?
Это курс о базовых алгоритмах и структурах данных. Благодаря ему вы научитесь быстрее писать чистый код, видеть разные варианты решения задачи и сравнивать их по эффективности. Если вы планируете менять место работы, знание алгоритмов пригодится на собеседованиях — в программу курса входит пробное алгоритмическое собеседование с обратной связью. Кроме того, вы получите консультацию или сопровождение при поиске работы. Курс рассчитан на 4 месяца при нагрузке примерно 10 часов в неделю, но вы можете проходить его быстрее — новые уроки будут доступны вам по мере изучения материала.
Основа всего обучения — это практика. Сначала вы изучаете теоретическую часть в интерактивном учебнике, а затем получаете до 15 практических задач по каждой пройденной теме. Всего на курсе более 100 задач.
Интерактивный учебник — это веб-платформа Практикума, в которую встроены уроки и небольшие тесты.
Практическая работа идёт в Яндекс.Контесте — специальной платформе, созданной для проверки алгоритмических задач. Вы можете проходить обучение на одном из языков: Python, Java, C++, JavaScript, Go, C#.
Программа обучения
- Введение в алгоритмы
Понятие сложности алгоритма. O-нотация. Оценка времени исполнения программы. - Основные структуры данных
Массив, связный список, стек, очередь. Сложность операций вставки, поиска и удаления. Представление данных в памяти. Пространственная сложность алгоритма. - Рекурсия
Понятие рекурсии. Принцип «разделяй и властвуй». Бинарный поиск. - Сортировки
Квадратичные сортировки. Сортировка слиянием. Быстрая сортировка. Линейная сортировка подсчётом. - Хеш-функции и хеш-таблицы
Абстракция отображения. Понятие и свойства хеш-функции, примеры. Структура данных хеш-таблица. Коллизии и способы их разрешения. - Деревья
Структура данных дерево. Сбалансированные деревья поиска. Структура данных куча. Пирамидальная сортировка. - Графы
Определение графа, способы представления в памяти. Обход графа в глубину и в ширину. Компоненты связности. Алгоритмы поиска кратчайшего пути. Минимальное остовное дерево. - Динамическое программирование
Определение, одномерные и двумерные задачи. Динамическое программирование по подотрезкам. Динамическое программирование по подмножествам. - Жадные алгоритмы
Понятие жадного алгоритма, область применения. Примеры, доказательство корректности алгоритма. - Пробное алгоритмическое собеседование
Алгоритмическое интервью один-на-один с наставником, максимально приближённое к настоящему. По итогам наставник даст обратную связь. - Алгоритмы на строках
Префикс-функция. Подстроки, префиксы и суффиксы. Поиск шаблона в строке. Наивный алгоритм. Структура данных бор.
Хекслет

Основы алгоритмов и структур данных
Курс посвящен знакомству со структурами данных, алгоритмами поиска и сортировки. На практике разберёте в каких ситуациях подходит тот или иной алгоритм. Какова его сложность используя оценку «О-большое». Сколько памяти потребуется для его реализации. Напишите реализации структур данных. Рассмотрите жадные алгоритмы и динамическое программирование.
Включено в курс:
- 10 уроков (видео и/или текст)
- 8 упражнений в тренажере
- 23 проверочных теста
- Дополнительные материалы
- Помощь в «Обсуждениях»
- Доступ к остальным курсам платформы
Чему вы научитесь?
- Определять эффективность алгоритмов
- Выбирать подходящую структуру данных в зависимости от ситуации
- Определять NP-полные задачи и находить приближённое решение
Программа курса:
- Введение
- Бинарный поиск
- Алгоритмы сортировки
- Алгоритмическая сложность
- Жадные алгоритмы
- Динамическое программирование
- Динамическое программирование (продолжение)
- Связный список
- Двусвязный список
- Очередь и стек
- Дополнительные материалы
OTUS

Алгоритмы и структуры данных
Практический курс, который поможет развить алгоритмическое мышление и повысить производительность своих программ. Вы расширите кругозор и получите опыт реализации классических алгоритмов, который поможет вам при создании собственных алгоритмов для решения бизнес-задач. Именно понимание принципов работы алгоритмов и структур данных позволяет повысить производительность программ и улучшить качество кода.
В программу входят самые известные прикладные алгоритмы, знание которых, как правило, требуется от претендентов на Middle и Senior-должности в крупных IT-компаниях. А также разбираются способы решения задач олимпиадного уровня.
Каждый алгоритм вы изучите «на пальцах», на конкретных визуальных примерах, исследуете разные способы его реализации. Существует тысячи и тысячи самых разных алгоритмов, на изучение которых можно потратить многие годы. Нет смысла изучать их все сразу, мы ценим ваше время, поэтому отобрали самые важные, интересные и популярные алгоритмы. Вы пройдете такие актуальные темы как битовая арифметика, рекурсия, динамическое программирование, теория графов и др. Модуль 9 посвящен продвинутым алгоритмическим трендам, которые рассчитаны на опытных специалистов.
Необходимые знания:
- Опыт программирования на любом языке программирования (начальный или средний уровень)
- Знание элементарной математики в объёме средней школы
- Минимальное знание алгоритмов и структур данных и желание развиваться в области их изучения
IN!

Алгоритмы и структуры данных: подготовка к интервью
В стоимость курса входит:
- 8 недель интенсивного обучения
- 40 интерактивных 90-минутных воркшопов
- За одну неделю: 3 живые лекции и 2 семинара в режиме реального времени
- Еженедельные офисные часы с менторами: 3 часа в неделю
- Итого: 84 часа обучения
- Оценки и обратная связь за 7 еженедельных проектов
- 4 пятничных соревнований: 90 минут, 5-7 задач, разбор решений
- Доступ к учебным материалам: 40 видео, слайды, код для 100+ программ
- Доступ к ежедневным домашним заданиям
- Доступ на закрытые онлайн-форум и чат сообщества с менторами
- Ревью/инспекции кода однокурсниками
- Study-партнер из числа сокурсников, меняющийся каждую неделю
- Сертификат Бронза/Серебро/Золото в зависимости от успеваемости
Уроки в удобное время после работы/учебы. Напишите код для 100+ задач по алгоритмам и структурам данных за 8 недель. Учебный план, который проходят студенты бакалавриата в Принстоне. Забудьте об обучении программированию в одиночку, здесь дружное сообщество.
Для кого курс?
- Кто готовится к интервью в Google и Facebook. Алгоритмы и структуры данных — фокус технических интервью в топовых технологических компаниях.
- Кто завершил nFactorial Start. Данный курс — логическое продолжение курса «Создание сильной базы в компьютерных науках для начинающих».
- Для спортивных программистов. Тех, кто хочет улучшить свой рейтинг в LeetCode и Codeforces, а также участвовать в олимпиадном программировании (IOI, ACM ICPC).
Robot_dreams

Алгоритмы и структуры данных
После курса вы сможете:
- работать с разными структурами данных
- реализовывать классические алгоритмы и выбирать алгоритм исходя из задачи
- изобретать новые решения и писать собственные алгоритмы
- находить данные в отсортированном массиве и решать задачи балансировки дерева
- строить хэш-таблицы, жадные алгоритмы и алгоритмы на строках
- оценивать программный код и находить способы его оптимизации
- применять алгоритмы для динамического программирования
- устроиться на работу в компанию, которая фокусируется на problem solving interview
Вы будете тратить ≈10 часов в неделю на самостоятельную практику и решать сложные задачи с использованием 5 основных видов алгоритмов. Научитесь одинаково эффективно работать с рекурсией и пузырьковой сортировкой и сможете выбирать наиболее эффективный алгоритм под свои задачи. В результате ― заложите фундамент алгоритмического мышления и сможете пройти problem solving interview на позицию Junior Web/Software Developer в большой международной корпорации.
За 9 недель вы решите большое количество задач разными методами и научитесь оптимизировать существующие алгоритмы под свои рабочие задачи. Вас ждет объемная и сложная самостоятельная практика, но в результате ― вы получите фундаментальные знания по программированию и закроете пробелы в знаниях. С навыками, приобретенными на курсе, вы сможете претендовать на должность Web/Software Developer в международной корпорации и будете изобретать эффективные решения тогда, когда другие специалисты тратят несколько часов, чтобы нагуглить готовый код.
Открытое образование

Алгоритмы программирования и структуры данных
Курс знакомит слушателей с базовыми структурами данных и алгоритмами, знание которых необходимо для эффективного решения разнообразных задач программирования. Авторы курса занимаются поиском и подготовкой одаренных в области информатики и программирования студентов и школьников. Под их руководством студенческие команды многократно становились чемпионами России по программированию, чемпионами мира и Европы.
Цель курса — получение базовых знаний об основных алгоритмах и структурах данных, используемых для хранения и поиска информации.В курсе используется система автоматического тестирования программ, обеспечивающая объективную оценку корректности выполнения заданий по программированию.
После прохождения курса обучающиеся приобретут навыки анализа и реализации базовых алгоритмов программирования и структур данных, а также проектирования и разработки средств реализации прикладных информационных технологий.
Прохождение курса «Алгоритмы программирования и структуры данных» позволит существенно повысить продуктивность и конкурентоспособность слушателей при разработке программного обеспечения.
Формат:
В состав курса входят видеолекции, опросы по материалам лекций и практические задания по программированию, предполагающие самостоятельную реализацию изучаемых в курсе алгоритмов и структур данных на одном из предложенных современных языков программирования. Курс рассчитан на десять недель. Средняя недельная нагрузка на обучающегося — 14 часов. Общая трудоемкость курса составляет четыре зачетных единицы.
Coursera

Специализация Структуры и алгоритмы данных
Специализация Coursera — это серия курсов, помогающих в совершенстве овладеть определенным навыком. Можно сразу записаться на специализацию или просмотреть курсы, из которых она состоит и выбрать тот, с которого вы хотите начать. Подписываясь на курс, который входит в специализацию, вы автоматически подписываетесь на всю специализацию. Можно завершить всего один курс, а потом сделать паузу в обучении или в любой момент отменить подписку. Отслеживайте свои курсы и прогресс на панели управления учащегося.
- Практический проект
В каждой специализации есть практический проект, который нужно успешно выполнить, чтобы завершить специализацию и получить сертификат. Если для практического проекта в специализации предусмотрен отдельный курс, прежде чем начать его, необходимо завершить все остальные курсы. - Получите сертификат
Когда вы пройдете все курсы и завершите практический проект, вы получите сертификат, которым можно поделиться с потенциальными работодателями и коллегами.
Ориентировочное время на прохождение: 8 месяцев. Рекомендуемый темп: 6 ч/неделю.
Shultais Education

Онлайн-курс Алгоритмы и структуры данных
Курс «Алгоритмы и структуры данных» разработан для начинающих программистов, которые хотят научиться проектировать эффективные и надежные алгоритмы для успешного решения рабочих задач, а также увеличить шансы пройти собеседование на более высокие позиции. Обучение алгоритмам проходит в режиме онлайн с изучением теоретической и практической части на языке Python. После просмотра обучающих видео-уроков ученики закрепляют материал практикой, также на Питоне.
В рамках курса вы познакомитесь как с классическими алгоритмами поиска и сортировки, так и с более современными: луковая маршрутизация, блокчейн, цифровая подпись.
Чему вы научитесь:
- Пользоваться классическими структурами данных.
- Выбирать оптимальные структуры под задачи.
- Определять сложность алгоритмов.
- Оптимизировать алгоритмы.
- Проектировать рекурсивные алгоритмы на Python.
- Оптимизировать рекурсивные функции.
- Строить и обходить деревья и графы.
- Сортировать массивы и связные списки.
- Быстро искать данные в массивах, деревьях и тексте.
- Искать и генерировать большие простые числа.
- Более эффективно использовать Python.
- Проектировать надежные и быстрые алгоритмы.
- Работать с хэш-таблицами, словарями и ассоциативными массивами.
- Шифровать и сжимать данные.
- Генерировать и обмениваться ключами шифрования.
- Сортировать данные, в том числе по нескольким критериям.
- Использовать комбинаторые алгоритмы и функции.
- Перебирать и оптимизировать деревья.
МФТИ

Бесплатный курс лекций от Московского физико-технического института
- Лекция 1. Сортировки
Содержание лекции: 00:07 Сортировка кучей. 00:55 ShiftUp операции. 09:51 Очередь с приоритетом. 15:33 HeapSort. 18:28 Быстрая сортировка Хоара. 20:21 Алгоритм сортировки. 25:02 Реализация. 39:47 Оценка времени работы. 01:04:00 Выбор пивота. 01:10:11 k-ая порядковая статистика. 01:13:34 k-ая порядковая статистика. Альтернативный алгоритм.
- Лекция 2. Продолжение сортировок
Содержание лекции: 1:24 kая статистика. Второй алгоритм. 15:26 Оценка времени работы. 20:27 Сортировка Тима Петерса. 33:54 Сортировка Тима Петерса. Вычисление ранов. 36:57 Слияние ранов. 01:07:37 Типы сортировок. 01:10:29 Сортировка подсчётом.
- Лекция 3. Продолжение сортировок
Содержание лекции: 01:14 Карманная сортировка. 15:50 Карманная сортировка. Второй алгоритм. 17:55 Поразрядная сортировка, LSD. 25:30 Альтернативная реализация, MSD. 59:32 Внешняя сортировка. 01:08:30 Оценка эффективности.
- Лекция 4. Динамический массив
Содержание лекции: 00:06 — Базовые структуры данных. 02:52 — Динамический массив. 09:50 — Динамический массив. Удаление. 11:40 — Реализация.
- Лекция 5. Базовые структуры данных
Содержание лекции: 00:07 Начало. Односвязный и двусвязный список. 02:29 Операции в списке и время их работы. 04:56 Удаление из списка. 06:54 Реализация списка. 20:56 Объединение списков. 24:32 Сравнение списка и массива. 29:34 Стек. 32:44 Реализация стека. 34:50 Очередь. 37:53 Дек. 39:15 Вторая реализация для стека. 44:47 Поддержка минимума. 49:21 Персистентнтные структуры данных. 54:45 Очередь из шести стеков. 1:30:22 Реализация очереди из шести стеков.
- Лекция 6. Хеш-таблица и k-ичная куча
Содержание лекции: 00:07 — начало. 00:27 — хеш-таблица. 24:50 — реализация. 27:23 — хеш-таблица с открытой адресацией. 36:35 — реализация. 42:01 — вычисление последовательности проб. 52:41 — двойное хеширование для вычисления проб. 56:49 — плюсы и минусы открытой адресации. 01:01:36 — время работы. 01:04:57 — k-ичная куча.
- Лекция 7. Деление чисел и многочленов
Содержание лекции: 00:07 начало. Деление чисел. 29:36 перемножение многочленов, улучшенная асимптотика.
- Лекция 8. Фибоначчиева куча
Содержание лекции: 15:35 удаление минимума. 17:28 поиск нового минимума. 25:41 код. 32:03 пример работы кода. 39:30 оценка времени работы поиска нового минимума. 48:24 Decrease-Key. 52:32 код. 57:02 анализ времени работы Cascading-Cut и Decrease-Key.
- Лекция 9. Деревья поиска
Содержание лекции: 01:00 начало. Деревья поиска. 17:45 определение дерева поиска. 21:48 поиск и вставка. 29:10 минимум/максимум/замена/удаление. 46:00 АВЛ-дерево. 50:00 вращения. 01:13:03 вставка.
VK Образование

Алгоритмы и структуры данных
Программа курса:
- Основы алгоритмики
Понятие алгоритма;
Исполнитель алгоритма;
Сложность операций;
Сложность алгоритма;
Как доказывают корректность;
Инварианты.
- Простейшие алгоритмы
Рекурсия;
Принцип «разделяй и властвуй»;
Сложность алгоритмов «разделяй и властвуй»;
Алгоритмы быстрого умножения;
Алгоритм быстрого возведения в степень;
Жадные алгоритмы и их корректность;
Алгоритмы на строках.
- Сортировка и поиск
Сортировки, их виды и применимость;
Задача поиска;
Парадигма CRUD: create, read, update, delete;
Поисковые структуры данных;
Списки, деревья поиска, балансированные деревья;
Хеш-функции, их использование;
Хеш-таблицы.
- Более практические задачи
Что дает курс?
- На практике разберешься в основных понятиях и сможешь объяснить, что это такое.
- Сможешь анализировать основные свойства алгоритмов.
- Научишься выбирать структуры данных для решения задач и обосновывать свой выбор.
- Лучшие выпускники смогут сделать свой первый карьерный шаг в ИТ и получить возможность присоединиться к одному из проектов экосистемы VK.
Какие знания нужны?
Специальная подготовка не требуется. Важны умение рассуждать и логика. Понадобятся знания математики, теории вероятности и информации, индукции и нахождения закономерностей.
Как проходят занятия?
Онлайн-занятия проходят два раза в неделю в вечернее время. Запись занятия доступна на портале вместе с домашними заданиями на закрепление пройденных тем. В программу включены четыре рубежных контроля.
ИНТУИТ

Алгоритмы и структуры данных
- Лекция 1
Дальнейшая программа курса: что такое алгоритм и структура данных. Рассмотрены базовые виды алгоритмов, их характеристики и методы анализа. Далее рассматриваются примеры создания алгоритмов для вычисления чисел Фибоначчи, проверки числа на простоту, быстрого возведения числа в целую степень. В конце лекции рассказывается об особенностях использования алгоритмов для работы с массивами: создание однопроходных алгоритмов, поиск минимального элемента, бинарный поиск.
- Лекция 2
Вторая лекция посвящена изучению элементарных структур данных. В начале даётся определение понятия «абстрактного типа данных». Далее лектор рассказывает о том, что такое амортизационный анализ и каковы его особенности. Рассматриваются такие виды структур и абстрактные типы данных, как: массив и динамический массив, стек, очередь и дэк, очередь с приоритетом, связные списки: однонаправленные и двунаправленные, двоичная куча. Разбираются недостатки и преимущества каждого вида структур, а также их реализация в виде программного кода.
- Лекция 3
Тема сортировок оказалась настолько объёмной, что её пришлось разделить на две лекции. В первой части подробно рассматриваются такие виды алгоритмов, как: сортировка одного, двух и трёх элементов, сортировка выбором, сортировка вставками, сортировка пузырьком, быстрая сортировка Хоара. Описывается, как можно оценить скорость работы того или иного алгоритма сортировки, как проанализировать алгоритмы по количеству сравнений и т.д.
- Лекция 4
На этой лекции рассматриваются другие виды алгоритмов и их применение: сортировка слиянием, в том числе двух упорядоченных массивов, сортировка подсчётом, поразрядная сортировка, пирамидальная сортировка и ряд других. Напоследок проводится сравнительный анализ разных алгоритмов.
Лекция 5
Из этой лекции для начала вы узнаете, что такое метод поиска хешированием, какие бывают хеш-функции (в том числе хеш-функции строк). Затем идёт подробное рассмотрение хеш-таблиц и способов их применения: что они собой представляют, основные методы разрешения коллизий (метод цепочек и метод открытой адресации), а также методы вставки, удаления и поиска элементов. Напоследок проводится сравнение хеш-таблиц по затратам времени и памяти.
ITVDN

Алгоритмы и структуры данных
Главная цель курса «Алгоритмы и структуры данных» – освоив базу алгоритмов, научиться использовать их в правильном ключе для решения сложных и нестандартных задач.
По завершении обучения вы получите опыт работы с большими массивами программного кода, научитесь комбинировать простые конструкции языка для построения сложных алгоритмов. Вы узнаете, как определять сложность любого алгоритма и, как следствие, сможете делать выбор в пользу наиболее оптимального решения среди нескольких возможных при создании программного обеспечения.
Все вопросы и темы, которые присутствуют в данном курсе, не раз ставились на собеседовании начинающему разработчику, что делает курс особенно полезным.
Видео курс является обновлением и дополнением другого курса по алгоритмам.




