Автор курса: Oleksandr Tsymbaliuk
Цикл видеолекций посвященный структурам данных и алгоритмам и их реализации на разных языках программирования.
Программа курса
Алгоритмы. Определение и виды
Асимптотическая сложность. О нотация или Big O
Арифметические операции. Реализация в языках программирования Java и Python
Позиционная система счисления
Рекурсия. Реализация в Python и Java
Мемоизация
Теоретическое описание
Сортировка выбором
Сортировка пользовательских типов данных
Сортировка пузырьком
Гномья сортировка
Сортировка перемешиванием
Сортировка расчёской
Сортировка вставками
Сортировка Шелла
Сортировка подсчетом
Сортировка распределяющим подсчетом
Блочная сортировка
Поразрядная сортировка
Сортировка слиянием. Итерационный алгоритм
Сортировка слиянием. Рекурсивный алгоритм
Быстрая сортировка. Разбиение Хоара
Быстрая сортировка. Разбиение Ломуто
Быстрая сортировка. Оптимизация
Быстрая сортировка. Трехчастное разбиение
Поиск теория
Линейный (последовательный) поиск
Бинарный поиск
Тернарный поиск
Экспоненциальный поиск
Поиск Фибоначчи
Интерполяционный поиск
Комбинаторика. Теоретические основы
Генерация перестановок. Алгоритм Джонсона-Троттера
Генерация перестановок в лексикографическом порядке. Алгоритм Нарайаны
Генерация перестановок с помощью циклических сдвигов
Генерация перестановок. Метод обмена Эрлиха
Генерация перестановок. Алгоритм Хипа
Генерация сочетаний
Генерация сочетаний в лексикографическом порядке
Генерация сочетаний с помощью алгоритма вращающейся двери
Генерация сочетаний с повторениями
Генерация размещений без повторений
Генерация размещений с повторениями
Генерация разбиений числа в лексикографическом порядке
Генерация разбиений числа на m частей
Разбиение множества. Теория
Разбиение множества с помощью ограниченно возрастающей последовательности
Двоичный код Грея
Генерация подмножеств с помощью кода Грея
Целочисленное деление. Вычисление остатка
Вычисление наибольшего общего делителя
Вычисление вещественного квадратного корня
Вычисление целочисленного квадратного корня
Ряд Фибоначчи
Слияние отсортированных последовательностей
Поиск минимума и максимума в последовательности
Поиск порядковой статистики
Реверс последовательности
Нахождение корней уравнений методом деления отрезка пополам
Нахождение корней уравнения методом хорд
Численное интегрирование
Численное дифференцирование
Схема Горнера
Хеш-функция
Строки. Способы хранения на ПК
Сравнение строк в лексикографическом порядке
Нахождение расстояния Левенштейна с помощью алгоритма Вагнера-Фишера
Поиск подстроки. Метод грубой силы
Префикс-функция
Поиск подстроки. Алгоритм Кнута-Морриса-Пратта
Алгоритм поиска подстроки Бойера-Мура-Хорспула
Поиск подстроки. Алгоритм Рабина-Карпа
LSD сортировка строк
Адаптация LSD сортировки для строк разной длины
MSD сортировка строк
Линейная интерполяция
Интерполяционный полином Лагранжа
Интерполяционный полином Ньютона
Интерполяционный полином Стирлинга
Интерполяция рациональными функциями Беррута
Аппроксимация линейной функцией по методу наименьших квадратов
Линеаризация функций
Попадание точки в круг
Попадание точки в треугольник
Пересечение отрезков
Пересечение окружностей
Вычисление площади многоугольника по формуле Гаусса
Обзор
Массивы
Список на основе массива
Односвязный список
Двусвязный список
Стек на основе односвязного списка
Стек на основе массива
Очередь на основе двусвязного списка
Очередь на основе массива
Ассоциативный массив на основе хеш-таблиц
Графы. Вступление
Представление простого графа
Поиск в глубину
Поиск в ширину
Вступление
Бинарное дерево поиска
Бинарная куча
Мои комментарии
-
Очень толковый плейлист по алгоритмам и структурам данных, отличное объяснение материала. Считаю этот канал жемчужиной на просторах YouTube.
-
Автор постоянно расширяет свой курс, дополняя новыми лекциями. Можно попросить осветить какую-либо тему.
-
В курсе используются языки Python, Java и Fortran. Малая часть примеров не охватывается Java кодом. Переписал с Python и Fortran на Java.