Skip to content

radmitr/data-structures-and-algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Структуры данных и алгоритмы

Автор курса: Oleksandr Tsymbaliuk

Цикл видеолекций посвященный структурам данных и алгоритмам и их реализации на разных языках программирования.

Ссылка на YouTube

Ссылка на программу курса

Программа курса

Алгоритмы

Теоретические основы

Алгоритмы. Определение и виды
Асимптотическая сложность. О нотация или Big O
Арифметические операции. Реализация в языках программирования Java и Python
Позиционная система счисления
Рекурсия. Реализация в Python и Java
Мемоизация

Сортировка

Теоретическое описание
Сортировка выбором
Сортировка пользовательских типов данных
Сортировка пузырьком
Гномья сортировка
Сортировка перемешиванием
Сортировка расчёской
Сортировка вставками
Сортировка Шелла
Сортировка подсчетом
Сортировка распределяющим подсчетом
Блочная сортировка
Поразрядная сортировка
Сортировка слиянием. Итерационный алгоритм
Сортировка слиянием. Рекурсивный алгоритм
Быстрая сортировка. Разбиение Хоара
Быстрая сортировка. Разбиение Ломуто
Быстрая сортировка. Оптимизация
Быстрая сортировка. Трехчастное разбиение

Поиск

Поиск теория
Линейный (последовательный) поиск
Бинарный поиск
Тернарный поиск
Экспоненциальный поиск
Поиск Фибоначчи
Интерполяционный поиск

Комбинаторика

Комбинаторика. Теоретические основы
Генерация перестановок. Алгоритм Джонсона-Троттера
Генерация перестановок в лексикографическом порядке. Алгоритм Нарайаны
Генерация перестановок с помощью циклических сдвигов
Генерация перестановок. Метод обмена Эрлиха
Генерация перестановок. Алгоритм Хипа
Генерация сочетаний
Генерация сочетаний в лексикографическом порядке
Генерация сочетаний с помощью алгоритма вращающейся двери
Генерация сочетаний с повторениями
Генерация размещений без повторений
Генерация размещений с повторениями
Генерация разбиений числа в лексикографическом порядке
Генерация разбиений числа на m частей
Разбиение множества. Теория
Разбиение множества с помощью ограниченно возрастающей последовательности
Двоичный код Грея
Генерация подмножеств с помощью кода Грея

Вычислительные алгоритмы

Целочисленное деление. Вычисление остатка
Вычисление наибольшего общего делителя
Вычисление вещественного квадратного корня
Вычисление целочисленного квадратного корня
Ряд Фибоначчи
Слияние отсортированных последовательностей
Поиск минимума и максимума в последовательности
Поиск порядковой статистики
Реверс последовательности
Нахождение корней уравнений методом деления отрезка пополам
Нахождение корней уравнения методом хорд
Численное интегрирование
Численное дифференцирование
Схема Горнера
Хеш-функция

Работа со строками

Строки. Способы хранения на ПК
Сравнение строк в лексикографическом порядке
Нахождение расстояния Левенштейна с помощью алгоритма Вагнера-Фишера
Поиск подстроки. Метод грубой силы
Префикс-функция
Поиск подстроки. Алгоритм Кнута-Морриса-Пратта
Алгоритм поиска подстроки Бойера-Мура-Хорспула
Поиск подстроки. Алгоритм Рабина-Карпа
LSD сортировка строк
Адаптация LSD сортировки для строк разной длины
MSD сортировка строк

Интерполяция и аппроксимация данных

Линейная интерполяция
Интерполяционный полином Лагранжа
Интерполяционный полином Ньютона
Интерполяционный полином Стирлинга
Интерполяция рациональными функциями Беррута
Аппроксимация линейной функцией по методу наименьших квадратов
Линеаризация функций

Вычислительная геометрия

Попадание точки в круг
Попадание точки в треугольник
Пересечение отрезков
Пересечение окружностей
Вычисление площади многоугольника по формуле Гаусса

Структуры данных

Списки, стеки, очереди, ассоциативные массивы

Обзор
Массивы
Список на основе массива
Односвязный список
Двусвязный список
Стек на основе односвязного списка
Стек на основе массива
Очередь на основе двусвязного списка
Очередь на основе массива
Ассоциативный массив на основе хеш-таблиц

Графы

Графы. Вступление
Представление простого графа
Поиск в глубину
Поиск в ширину

Деревья

Вступление
Бинарное дерево поиска

Кучи

Бинарная куча


Мои комментарии

  • Очень толковый плейлист по алгоритмам и структурам данных, отличное объяснение материала. Считаю этот канал жемчужиной на просторах YouTube.

  • Автор постоянно расширяет свой курс, дополняя новыми лекциями. Можно попросить осветить какую-либо тему.

  • В курсе используются языки Python, Java и Fortran. Малая часть примеров не охватывается Java кодом. Переписал с Python и Fortran на Java.

About

Data structures and algorithms by Olexandr Tsymbaliuk. Not finished.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published