Содержание курса
1. Введение в алгоритмы и структуры данных
2 урока
202
202
2м
10
Закрытый
1.1
Краткий обзор структуры курса
↗
124
124
0м 25с
4
Закрытый
1.2
Что такое алгоритмы?
↗
78
78
2м 54с
6
2. Оценка сложности алгоритмов
6 уроков
498
383
40м
21
Закрытый
2.1
Асимптотическая сложность и нотация большого O
↗
81
69
14м 54с
11
Закрытый
2.2
Пространственная сложность (потребление памяти)
↗
72
72
1м 48с
3
Закрытый
2.3
O, o, Θ, Ω(осторожно, матан)
↗
96
45
14м 59с
3
Закрытый
2.4
Таблица распространенных сложностей
↗
84
74
2м 15с
2
Закрытый
2.5
Примеры оценки сложности алгоритмов
↗
78
69
2м 17с
1
Закрытый
2.6
Задачи
↗
87
54
7м 35с
1
3. Основные структуры данных
8 уроков
458
267
202м
5
Закрытый
3.1
Массивы
↗
71
49
10м 37с
0
Закрытый
3.2
Списки: односвязанные, двусвязанные
↗
64
48
6м 24с
0
Закрытый
3.3
Применение списков
↗
68
48
5м 39с
0
Закрытый
3.4
Очередь и стэк: принципы FIFO и LIFO
↗
51
36
9м 36с
0
Закрытый
3.5
Реализация и задачи
↗
64
44
3м 13с
0
Закрытый
3.6
Задачи
↗
64
21
139м 16с
3
Закрытый
3.7
Проект 1: Стэк
↗
44
12
30м 8с
1
Закрытый
3.8
Проект 2: Очередь
↗
32
9
-
1
4. Алгоритмы поиска и сортировки
10 уроков
313
148
250м
6
Закрытый
4.1
Линейный и бинарный поиски
↗
40
31
5м 42с
1
Закрытый
4.2
Модификации и тесты на алгоритмы поиска
↗
44
25
6м 2с
0
Закрытый
4.3
Сортировка пузырьком
↗
33
14
45м 4с
3
Закрытый
4.4
Сортировка вставками
↗
38
18
40м 38с
0
Закрытый
4.5
Сортировка слиянием (merge sort)
↗
30
6
40м 49с
1
Закрытый
4.6
Быстрая сортировка (Quick Sort)
↗
27
5
48м 33с
1
Закрытый
4.7
Quick Select
↗
27
18
1м 22с
0
Закрытый
4.8
Детерменированный Quick Sort
↗
23
18
2м 40с
0
Закрытый
4.9
Задачи
↗
34
8
64м 59с
0
Закрытый
4.10
Проект 3: детерминированный Quick Sort
↗
17
5
-
0
5. Кучи и алгоритмы на их основе
4 урока
82
53
29м
3
Закрытый
5.1
Двоичная куча: свойства, использование в алгоритмах.
↗
22
14
10м 32с
2
Закрытый
5.2
Построение кучи
↗
18
18
3м 35с
1
Закрытый
5.3
Встроенные кучи в C++ и Python
↗
17
13
2м 31с
1
Закрытый
5.4
Задачи
↗
25
8
16м 30с
-1
6. Дерево отрезков
8 уроков
139
92
21м
-2
Закрытый
6.1
Что такое ДО?
↗
23
17
2м 59с
0
Закрытый
6.2
Построение дерева
↗
19
16
1м 42с
0
Закрытый
6.3
Обновление значений
↗
16
14
1м 48с
0
Закрытый
6.4
Обработка запросов
↗
14
12
1м 50с
0
Закрытый
6.5
Сжатие координат
↗
16
13
1м 23с
-1
Закрытый
6.6
Неявное дерево отрезков
↗
16
13
2м 30с
0
Закрытый
6.7
Задачи
↗
21
4
14м 32с
-1
Закрытый
6.8
Проект 4: Дерево отрезков
↗
14
3
-
0
7. Бинарные деревья
9 уроков
161
114
20м
0
Закрытый
7.1
Что такое дерево?
↗
23
15
2м 58с
0
Закрытый
7.2
Что такое бинарное дерево поиска (BST)
↗
18
13
2м 42с
0
Закрытый
7.3
Операции в бинарном дереве поиска
↗
16
15
1м 12с
0
Закрытый
7.4
Обходы дерева
↗
19
15
1м 18с
0
Закрытый
7.5
Проверка дерева на соответствие BST
↗
20
12
2м 10с
0
Закрытый
7.6
Минимум и максимум в BST
↗
14
11
1м 26с
0
Закрытый
7.7
Уравновешенные BST
↗
15
12
1м 5с
0
Закрытый
7.8
Использование BST в реальных задачах
↗
15
11
4м 34с
0
Закрытый
7.9
Задачи
↗
21
10
6м 36с
0
8. Сбалансированные деревья
7 уроков
77
32
3м
0
Закрытый
8.1
Типы сбалансированных деревьев
↗
16
11
2м 44с
0
Закрытый
8.2
AVL-дерево
↗
10
6
1м 57с
0
Закрытый
8.3
Splay-дерево
↗
7
4
-
0
Закрытый
8.4
Декартово дерево
↗
6
5
-
0
Закрытый
8.5
Красно-черное дерево
↗
6
4
-
0
Закрытый
8.6
Задачи
↗
20
2
-
0
Закрытый
8.7
Проект 5: Set
↗
12
0
-
0
9. Хэш-таблицы
7 уроков
124
73
5м
0
Закрытый
9.1
Основная идея и примеры
↗
20
14
2м 39с
0
Закрытый
9.2
Коллизии: как их обрабатывать
↗
12
12
1м 5с
0
Закрытый
9.3
Частотный анализ
↗
16
13
1м 43с
0
Закрытый
9.4
Хранение уникальных элементов
↗
14
10
1м 45с
0
Закрытый
9.5
Простая хэш-таблица на основе массива
↗
17
9
1м 35с
0
Закрытый
9.6
Обработка коллизий метод цепочек
↗
17
13
1м 31с
0
Закрытый
9.7
Задачи
↗
28
2
-
0
10. Алгоритмы на графах
8 уроков
66
66
0м
0
Закрытый
10.1
Введение в графы
↗
12
12
0м 1с
0
Закрытый
10.2
Обходы графа (DFS и BFS)
↗
11
11
0м 1с
0
Закрытый
10.3
Компоненты связанности
↗
9
9
-
0
Закрытый
10.4
Кратчайшие пути
↗
10
10
0м 1с
0
Закрытый
10.5
Поиск минимального остовного дерева
↗
9
9
-
0
Закрытый
10.6
Топологическая сортировка
↗
6
6
-
0
Закрытый
10.7
Алгоритм Флойда-Уоршелла
↗
5
5
-
0
Закрытый
10.8
Алгоритм А и его примение
↗
4
4
-
0
11. Геометрические алгоритмы
6 уроков
41
41
0м
0
Закрытый
11.1
Введение в геометрию
↗
10
10
0м 1с
0
Закрытый
11.2
Определение выпуклого многоугольника
↗
7
7
-
0
Закрытый
11.3
Пересечение отрезков
↗
7
7
-
0
Закрытый
11.4
Выпуклая оболочка (Convex Hull)
↗
5
5
-
0
Закрытый
11.5
Алгоритм триангуляции Делоне
↗
6
6
-
0
Закрытый
11.6
Геометрические алгоритмы в графике
↗
6
6
-
0
12. Теория чисел и криптография
6 уроков
28
28
0м
0
Закрытый
12.1
Основы теории чисел
↗
7
7
-
0
Закрытый
12.2
Расширенный алгоритм Евклида
↗
4
4
-
0
Закрытый
12.3
Быстрое возведение в степень
↗
5
5
-
0
Закрытый
12.4
Решето Эратосфена и тесты простоты
↗
3
3
-
0
Закрытый
12.5
Китайская теорема об остатках
↗
4
4
-
0
Закрытый
12.6
RSA и основы криптографии
↗
5
5
-
0
13. Динамическое программирование и оптимизация
7 уроков
31
31
0м
0
Закрытый
13.1
Базовые принципы ДП
↗
6
6
-
0
Закрытый
13.2
Классические задачи ДП
↗
6
6
-
0
Закрытый
13.3
ДП с восстановлением ответа
↗
5
5
-
0
Закрытый
13.4
Задача о рюкзаке
↗
4
4
-
0
Закрытый
13.5
ДП по деревьям
↗
3
3
-
0
Закрытый
13.6
ДП по маскам
↗
2
2
-
0
Закрытый
13.7
Комбинированные техники ДП
↗
5
5
-
0
14. Параллельные и потоковые алгоритмы
5 уроков
29
29
0м
0
Закрытый
14.1
Основы многопоточного программирования
↗
7
7
-
0
Закрытый
14.2
MapReduce и обработка больших данных
↗
6
6
-
0
Закрытый
14.3
Алгоритмы для многопоточных систем
↗
5
5
-
0
Закрытый
14.4
Lock-free структуры данных
↗
4
4
-
0
Закрытый
14.5
Параллельные алгоритмы сортировки
↗
7
7
-
0
15. Завершающий модуль
1 урок
16
16
1м
0
Закрытый
15.1
Итоги курса
↗
16
16
1м 37с
0