Какие алгоритмы нужно знать, чтобы стать хорошим программистом?

R

Renelio

Original poster
Данная статья содержит не только самые распространенные алгоритмы и структуры данных, но и более сложные вещи, о которых вы могли не знать. Читаем и узнаем!


Я предполагаю, что вы знаете как минимум один язык программирования и такие понятия, как объект и указатель. Алгоритмы и структуры данных будут перечисляться по степени их сложности.

Для начала давайте начнем с линейных структур данных и алгоритмов
  • Массивы
  • Связный список
  • Стек
  • Очереди
Перейдем к базовым алгоритмам
  • Сортировка — Сортировка слиянием, Сортировка вставками, Быстрая сортировка, Несколько взаимных перестановок.
  • Умножение матриц (Не обязательно реализовывать, главное — знать алгоритм)
  • Основные алгоритмы просеивания
  • Беззнаковая математика, включая умножение и деление
  • Алгоритм Евклида для нахождения НОД (наибольший общий делитель), Модульная инверсия, Быстрое возведение в степень
  • Числа Фибоначчи с матричным умножением
  • Нормальное распределение и математическое ожидание
  • Статистика – среднее вероятностное значение случайной величины, медиана, дисперсия, теорема Байеса
Также можно изучить популярные алгоритмические методы:
  • Алгоритмы декомпозиции – Бинарный поиск, Нахождение подмассива с наибольшей суммой элементов
  • Жадные алгоритмы – Выбор задач, кодирование по алгоритму Хаффмана
  • Динамичное программирование – Цепное матричное умножение, Алгоритм решения задачи по укладке ранца
  • Линейное программирование – Максимизация параметра, Линейное время сортировки
  • Криптографические алгоритмы – Алгоритм Манакера по нахождению длиннейшей подстроки-палиндрома, алгоритм нахождения наибольшей общей подпоследовательности (LSC), расстояние Левенштейна
Теперь перейдем к типичным нелинейным структурам данных
  • Деревья – Бинарное дерево, Дерево общего вида, Наименьший общий предок
  • Бинарное дерево поиска – Симметричный обход, Обход по уровням, Нахождение k’ого наибольшего элемента, Диаметр, Глубина, Количество узлов и т.д.
  • Динамическая память – Динамический массив, Двоичная куча, Пирамидальная сортировка
  • Алгоритм объединения-поиска
  • Хеш-таблица – Метод нахождения коллизий (Linear Probing), Открытая адресация, Предотвращение коллизий
Рассмотрим графы
  • Список смежных вершин графа, Матрица смежности графа, Взвешенные рёбра графа
  • Основные алгоритмы обхода – Поиск в ширину, Поиск в глубину и т.д.
  • Алгоритмы нахождения кратчайшего пути — Алгоритм Дейкстры, Алгоритм Флойда-Уоршелла, Алгоритм Беллмана-Форда
  • Минимальное остовное дерево — Алгоритм Крускала, Алгоритм Прима
К данному моменту вы должны быть хорошо знакомы с программированием, так как для дальнейшего прочтения и углубления в данную тему вы должны знать больше, чем студент.

Усложнённые деревья и графы
  • Сбалансированные деревья – AVL-дерево, Красно-черное дерево
  • Heavy-light декомпозиция, Б-деревья, Дерево квадрантов
  • Усложнённый граф – Минимальный разрез, Максимальный поток
  • Максимальное покрытие – Теорема о свадьбах
  • Гамильтонов цикл
  • Рёберный граф/ Линейный граф
  • Сильно связные компоненты
  • Главный подграф, Покрытие вершин, Задача коммивояжёра – Алгоритм аппроксимации
Продвинутые криптографические алгоритмы:
  • Алгоритм Кнута-Морриса-Пратта
  • Алгоритм Рабина-Карпа
  • Префиксные и суффиксные деревья
  • Автоматизация суффиксов – Алгоритм Укконена
Высшая математика
  • Быстрое преобразование Фурье
  • Проверка простоты
  • Вычислительная геометрия – Задача поиска ближайшей пары, Диаграмма Вороного, Выпуклая оболочка множества точек
Общие продвинутые темы:
  • Выполнение обхода всех комбинаций/перестановок
  • Поразрядная обработка
 
Название темы
Автор Заголовок Раздел Ответы Дата
A Банк требует документы по транзакциям по карте. Какие доки предоставить? Вопросы и интересы 1
B Какие существуют аналоги cctools ? Софт для работы с текстом/Другой софт 0
Emilio_Gaviriya Статья AlienVault: Всё, что вам нужно знать о платформе для обнаружения угроз. Уязвимости и взлом 0
Mr.Prime Ищу специалиста по деанону телеги. Есть приватный канал, нужно узнать владельца. Предоставляю работу. Ищу специалиста. 0
Support81 Россия вступает в гонку спутникового интернета: что нужно знать о проекте “Бюро 1440" Новости в сети 3
Z Мне нужно купить веб -оболочку или cpanel Корзина 1
H Взлом без предоплат писать на [email protected]!,Ok.ru,WhatsApp на заказ! Не нужно писать в ЛС на форуме. Все контакты указаны ниже Пишите на поч Корзина 0
Eteriass Интересно Атака "Злой двойник" и все что нужно про него знать Уязвимости и взлом 7
Denik Интересно Все, что нужно знать о DoS атаках Уязвимости и взлом 6
P Взлом Хорошие цены связь [email protected]!,Ok.ru,WhatsApp на заказ! Не нужно писать в ЛС на форуме. Все контакты указаны ниже Чтобы сделать Корзина 0
P Взлом Хорошие цены связь [email protected]!,Ok.ru,WhatsApp на заказ! Не нужно писать в ЛС на форуме. Все контакты указаны ниже Чтобы сделать Корзина 0
L Интересно Биткоин готовится к потенциальному прорыву около $7 200, но нужно быть внимательными Новости в сети 1
N нужно подтверждение акк госуслуг Предоставляю работу. Ищу специалиста. 1
B Услуги хакера и взлом на заказ Заказать взлом?-пишите нам [email protected] Не нужно писать в ЛС на форуме. Все контакты указаны ниже Пишите на поч Корзина 0
B Закрыто Аккаунты Яндекс.Директ с балансом НДС вносить не нужно Корзина 1
АнАлЬнАя ЧуПаКаБрА INLINE Мож кому нужно) Русская Рыбалка 4 Проекты Private Keeper 1
G Все что нужно знать о взломах ВКонтакте и других соц. сетей Полезные статьи 1
Z нужно несколько аккаунтов вк Раздача (аккаунтов/ключей) 3
Admin ttr.casino B&C [PK] (VT на него не нужно) Бруты/Парсеры/Чекеры 0

Название темы