Курс Алгоритмы и структуры данных от А до Я

5Premium-PLUS

Зачем изучать алгоритмы и структуры данных? Алгоритмы и структуры данных составляют основы программирования. Понимание алгоритмов и структур данных – одно из самых важных требований для устройства на работу в хорошие компании. В этом курсе вы изучите основные алгоритмы и структуры данных на практике.
Примеры кода написаны на C#, однако 99% материала будет ясно любому Java-программисту, поскольку синтаксис языков очень схож.

Начать обучение Регистрация

О курсе - Чему Вы научитесь?

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

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


Знание алгоритмов помогает найти эффективное решение задачи.
Задача разработчика — использовать наиболее эффективное решение. Для этого нужно учитывать скорость работы программы, объём потребляемой памяти, экономическую эффективность (насколько стоимость решения оправдана конечным результатом), простоту реализации, масштабируемость.

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

Примеры кода в данном курсе написаны на C#, однако 99% материала будет ясно любому Java-программисту, поскольку синтаксис языков очень схож.

Чему вы научитесь

На данный момент курс покрывает следующие темы (подробнее по урокам смотрите программу курса):
  • Введение в алгоритмы и структуры данных: структура данных, абстрактный тип данных, разница между этими понятиями. Что такое алгоритм и почему всё это для нас важно?
  • Введение в анализ алгоритмов: сколько времени займёт исполнение программы, построение log-log графика, аппроксимации, порядок роста сложности (Big-O нотация), потребление памяти
  • Массивы: массивы в C#, массивы в памяти, сложность операций на массивах
  • Алгоритмы сортировки: пузырьковая, сортировка выборкой, вставками, рекурсия, Шелл-сортировка, сортировка слиянием, быстрая, стабильность алгоритмов сортировки
  • Списки: List встроенный в BCL, узлы (ноды), связный список (односвязный, двусвязный), LinkedList встроенный в BCL
  • Стек: теория и практика, стеки на массиве, на связном списке, встроенный в BCL
  • Очереди: теория и практика, очереди на массиве, кольцевой буфер, на связном списке, встроенная в BCL
  • Алгоритмы поиска: линейный, бинарный
  • Символьные таблицы: введение, API, таблицы на последовательном поиске, таблицы на бинарном поиске
  • Хеш-таблицы: введение, хеширование, GetHashCode, подходы к разрешению коллизий: раздельные цепочки и линейное пробирование, тип Dictionary встроенный в BCL, типы представляющие множества встроенные в BCL
  • Деревья: двоичное дерево поиска и его реализация (больше будет добавлено в будущем)
  • Пирамиды: введение, пирамиды и массивы, пирамидальная сортировка
  • Различные алгоритмы: этот раздел будет расширяться, а пока включает алгоритм «решето Эратосфена»

Это достаточно полное руководство по алгоритмам и структурам данных. Курс практический с домашними заданиями и разбором решений.

Для кого этот курс
  • C#-разработчики, которые хотят изучить алгоритмы и структуры данных на их любимом языке
  • C# и Java-разработчики, желающие повысить свой профессиональный уровень востребованными знаниями и опытом эффективного применения алгоритмов и структур данных
  • Начинающие разработчики, которые готовятся к поиску работы и прохождению собеседований

Требования для прохождения курса
  • Знание C# или Java на базовом уровне
  • Из инструментов достаточно Visual Studio Community Edition (это бесплатная полнофункциональная расширяемая среда IDE для создания современных приложений Android, iOS и Windows, а также веб-приложений и облачных служб)
Прежде чем углубляться в изучение Алгоритмов и структур данных, рекомендуем получить базовые знания по основам и языкам программирования C# и Java в наших курсах:
Программирование на C# – от новичка до специалиста
Программирование на Java с нуля
ВСЕ КУРСЫ - Языки программирования

Начать обучение

План курса

Программа обучения включает видео уроки по изучению основ программирования - основных базовых Алгоритмов и структур данных для начинающих C# и Java разработчиков. Благодаря практическим заданиям и примерам, Вы сможете закрепить полученные знания по использованию алгоритмов и структур данных на практике.

развернуть все

свернуть все

О курсе Алгоритмы и структуры данных от А до Я
1. Введение в алгоритмы и структуры данных
2. Введение в анализ алгоритмов
  • 2.1 Временная сложность16:00
  • 2.2 Строим log-log график. Прогнозируем время работы алгоритма06:39
  • 2.3 Аппроксимации07:42
  • 2.4 Порядок роста08:27
3. Массивы
  • 3.1 Обзор массивов в C#20:05
  • 3.2 Массивы в памяти11:38
  • 3.3 Временная сложность операций на массиве08:40
  • 3.4 Операции на массивах в C#13:37
4. Алгоритмы сортировки
  • 4.1 Пузырьковая сортировка (теория)10:12
  • 4.2 Пузырьковая сортировка (реализация)14:30
  • 4.3 Устойчивость (стабильность) алгоритма сортировки09:18
  • 4.4 Сортировка выборкой (теория)05:21
  • 4.5 Сортировка выборкой (реализация)05:59
  • 4.6 Сортировка вставками (теория)09:23
  • 4.7 Сортировка вставками (реализация)06:36
  • 4.8 Рекурсия15:34
  • 4.9 Сортировка Шелла (теория)14:24
  • 4.10 Сортировка Шелла (реализация)12:30
  • 4.11 Сортировка слияниями (теория)08:58
  • 4.12 Сортировка слияниями (реализация)15:20
  • 4.13 Быстрая сортировка (теория)08:37
  • 4.14 Быстрая сортировка (реализация)07:23
5. Списки
  • 5.1 Тип List в BCL32:49
  • 5.2 Узел (Node) - базовый строительный блок09:39
  • 5.3 Связные списки02:28
  • 5.4 Односвязный список (теория)08:32
  • 5.5 Односвязный список (реализация)21:42
  • 5.6 Двусвязный список (теория)03:29
  • 5.7 Двусвязный список (реализация)13:47
  • 5.8 Тип LinkedList в BCL08:42
6. Стек (Stack)
  • 6.1 Стек (теория)09:39
  • 6.2 Реализация стека (на массиве)19:21
  • 6.3 Реализация стека (на связном списке)06:59
  • 6.4 Стек из BCL. Характеристики стека05:33
7. Очередь (Queue)
  • 7.1 Очередь (теория)12:13
  • 7.2 Реализация очереди (на массиве)11:25
  • 7.3 Кольцевая очередь (реализация)13:34
  • 7.4 Реализация очереди (на связном списке)06:47
  • 7.5 Тип Queue в BCL07:52
8. Алгоритмы поиска
  • 8.1 Линейный поиск22:36
  • 8.2 Бинарный поиск (реализация)12:58
9. Символьные таблицы
  • 9.1 Введение в символьные таблицы03:43
  • 9.2 API символьных таблиц07:44
  • 9.3 Последовательный поиск (тривиальный подход)13:50
  • 9.4 Последовательный поиск: ДЗ01:31
  • 9.5 Последовательный поиск: решение ДЗ06:38
  • 9.6 Символьная таблица на бинарном поиске26:41
  • 9.7 Символьная таблица на бинарном поиске: ДЗ05:36
  • 9.8 Символьная таблица на бинарном поиске: решение ДЗ12:00
  • 9.9 Заключение02:38
10. Символьные таблицы и Хеширование (Хеш-таблицы)
  • 10.1 Введение в хеш-таблицы05:50
  • 10.2 Хеширование в примитивных типах и GetHashCode13:23
  • 10.3 GetHashCode в ссылочных типах и типах-значениях09:26
  • 10.4 Значимость хеширования. Реализация GetHashCode26:23
  • 10.5 Разрешение коллизий06:42
  • 10.6 Метод раздельных цепочек17:07
  • 10.7 Метод раздельных цепочек: ДЗ02:31
  • 10.8 Метод раздельных цепочек: решение ДЗ19:53
  • 10.9 Метод линейного пробирования20:39
  • 10.10 Словари в BCL06:02
11. Деревья
  • 11.1 Введение в деревья05:50
  • 11.2 Двоичное дерево поиска (Binary Search Tree - BST)10:33
  • 11.3 Простая реализация BST. Часть 113:56
  • 11.4 Простая реализация BST. Часть 215:13
  • 11.5 Операция удаления в BST (теория)08:18
  • 11.6 Операция удаления в BST (реализация)10:39
12. Пирамида и пирамидальная сортировка
  • 12.1 Определение пирамиды05:07
  • 12.2 Пирамида и массив04:36
  • 12.3 Операция вставки (теория)03:06
  • 12.4 Реализация пирамиды14:22
  • 12.5 Операция удаления (теория)05:03
  • 12.6 Операция удаления (реализация). Реализация Peek15:14
  • 12.7 Характеристики операций на пирамиде02:35
  • 12.8 Пирамидальная сортировка (теория)08:57
  • 12.9 Пирамидальная сортировка (реализация)05:53
13. Различные алгоритмы
  • 13.1 Решето Эратосфена13:26
Завершение курса - Получение Сертификата

Начать обучение

Студенты также изучают

online_course
new
5
  • 29 видео
  • 6 часов
online_course
new
5
  • 98 видео
  • 25 часов
online_course
new
4.9
  • 48 видео
  • 9 часов
online_course
new

Отзывы студентов о курсе

Мы собрали отзывы учеников, прошедших онлайн курс. Оставьте свой отзыв после прохождения Курса Алгоритмы и структуры данных от А до Я!

Пётр Колосов

Отличный курс!!!

Начать обучение

Преподаватель

Course Author
Илья Фофанов

О преподавателе курса

  • Инженер-программист с опытом более 15 лет
  • Сертифицированный специалист по WPF и WCF
  • Организатор и координатор .NET митапов MskDotNet

"Я благодарен за то, что люблю своё дело.

Профессионально занимался проектированием и реализацией ПО больше 10 лет, преимущественно на платформе .NET. Люблю работать над созданием богатых и мощных приложений с использованием современных технологий. Сертифицированный специалист по WPF и WCF. Один из координаторов московских .NET митапов MskDotNet.

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

Пожелание студентам: Fake it Till You Make it! Это означает: притворяйся, пока не получится.  Хотите стать senior developer? Имитируйте его деятельность, старайтесь делать всё то же, что делает senior developer, и так или иначе - вы им станете. Поэтому - учиться, учиться и  ещё раз учиться. Нет унынию. Fake it Till You Make it!"