Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/radmitr/data-structures-and-algorithms
Data structures and algorithms by Olexandr Tsymbaliuk. Not finished.
https://github.com/radmitr/data-structures-and-algorithms
algorithms data-structures
Last synced: 20 days ago
JSON representation
Data structures and algorithms by Olexandr Tsymbaliuk. Not finished.
- Host: GitHub
- URL: https://github.com/radmitr/data-structures-and-algorithms
- Owner: radmitr
- Created: 2023-11-24T12:29:14.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-01-12T14:25:23.000Z (about 1 year ago)
- Last Synced: 2024-11-22T13:28:40.712Z (3 months ago)
- Topics: algorithms, data-structures
- Language: Java
- Homepage: https://www.youtube.com/playlist?list=PLtNPgSbW9TX7acrQa2LeBAMGxO5WRAVsz
- Size: 13.2 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Структуры данных и алгоритмы
Автор курса: **Oleksandr Tsymbaliuk**
Цикл видеолекций посвященный структурам данных и алгоритмам и их реализации на разных языках программирования.
[Ссылка на YouTube](https://youtube.com/playlist?list=PLtNPgSbW9TX7acrQa2LeBAMGxO5WRAVsz&si=WQp44whpgYTCJhIX)
[Ссылка на программу курса](https://docs.google.com/document/d/1U-XBUSU1PMwn7DL_nks2nUmyPSiDDdSpmTF9Ec_7MSU/edit)
Программа курса
## Алгоритмы
#### Теоретические основы
Алгоритмы. Определение и виды
Асимптотическая сложность. О нотация или Big O
Арифметические операции. Реализация в языках программирования Java и Python
Позиционная система счисления
Рекурсия. Реализация в Python и Java
Мемоизация#### Сортировка
Теоретическое описание
Сортировка выбором
Сортировка пользовательских типов данных
Сортировка пузырьком
Гномья сортировка
Сортировка перемешиванием
Сортировка расчёской
Сортировка вставками
Сортировка Шелла
Сортировка подсчетом
Сортировка распределяющим подсчетом
Блочная сортировка
Поразрядная сортировка
Сортировка слиянием. Итерационный алгоритм
Сортировка слиянием. Рекурсивный алгоритм
Быстрая сортировка. Разбиение Хоара
Быстрая сортировка. Разбиение Ломуто
Быстрая сортировка. Оптимизация
Быстрая сортировка. Трехчастное разбиение#### Поиск
Поиск теория
Линейный (последовательный) поиск
Бинарный поиск
Тернарный поиск
Экспоненциальный поиск
Поиск Фибоначчи
Интерполяционный поиск#### Комбинаторика
Комбинаторика. Теоретические основы
Генерация перестановок. Алгоритм Джонсона-Троттера
Генерация перестановок в лексикографическом порядке. Алгоритм Нарайаны
Генерация перестановок с помощью циклических сдвигов
Генерация перестановок. Метод обмена Эрлиха
Генерация перестановок. Алгоритм Хипа
Генерация сочетаний
Генерация сочетаний в лексикографическом порядке
Генерация сочетаний с помощью алгоритма вращающейся двери
Генерация сочетаний с повторениями
Генерация размещений без повторений
Генерация размещений с повторениями
Генерация разбиений числа в лексикографическом порядке
Генерация разбиений числа на m частей
Разбиение множества. Теория
Разбиение множества с помощью ограниченно возрастающей последовательности
Двоичный код Грея
Генерация подмножеств с помощью кода Грея#### Вычислительные алгоритмы
Целочисленное деление. Вычисление остатка
Вычисление наибольшего общего делителя
Вычисление вещественного квадратного корня
Вычисление целочисленного квадратного корня
Ряд Фибоначчи
Слияние отсортированных последовательностей
Поиск минимума и максимума в последовательности
Поиск порядковой статистики
Реверс последовательности
Нахождение корней уравнений методом деления отрезка пополам
Нахождение корней уравнения методом хорд
Численное интегрирование
Численное дифференцирование
Схема Горнера
Хеш-функция#### Работа со строками
Строки. Способы хранения на ПК
Сравнение строк в лексикографическом порядке
Нахождение расстояния Левенштейна с помощью алгоритма Вагнера-Фишера
Поиск подстроки. Метод грубой силы
Префикс-функция
Поиск подстроки. Алгоритм Кнута-Морриса-Пратта
Алгоритм поиска подстроки Бойера-Мура-Хорспула
Поиск подстроки. Алгоритм Рабина-Карпа
LSD сортировка строк
Адаптация LSD сортировки для строк разной длины
MSD сортировка строк#### Интерполяция и аппроксимация данных
Линейная интерполяция
Интерполяционный полином Лагранжа
Интерполяционный полином Ньютона
Интерполяционный полином Стирлинга
Интерполяция рациональными функциями Беррута
Аппроксимация линейной функцией по методу наименьших квадратов
Линеаризация функций#### Вычислительная геометрия
Попадание точки в круг
Попадание точки в треугольник
Пересечение отрезков
Пересечение окружностей
Вычисление площади многоугольника по формуле Гаусса## Структуры данных
#### Списки, стеки, очереди, ассоциативные массивы
Обзор
Массивы
Список на основе массива
Односвязный список
Двусвязный список
Стек на основе односвязного списка
Стек на основе массива
Очередь на основе двусвязного списка
Очередь на основе массива
Ассоциативный массив на основе хеш-таблиц#### Графы
Графы. Вступление
Представление простого графа
Поиск в глубину
Поиск в ширину#### Деревья
Вступление
Бинарное дерево поиска#### Кучи
Бинарная куча
-----
**Мои комментарии**
- Очень толковый плейлист по алгоритмам и структурам данных, отличное объяснение материала. Считаю этот канал жемчужиной на просторах YouTube.
- Автор постоянно расширяет свой курс, дополняя новыми лекциями. Можно попросить осветить какую-либо тему.
- В курсе используются языки Python, Java и Fortran. Малая часть примеров не охватывается Java кодом. Переписал с Python и Fortran на Java.