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

R

Renelio

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


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

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

Усложнённые деревья и графы
  • Сбалансированные деревья – AVL-дерево, Красно-черное дерево
  • Heavy-light декомпозиция, Б-деревья, Дерево квадрантов
  • Усложнённый граф – Минимальный разрез, Максимальный поток
  • Максимальное покрытие – Теорема о свадьбах
  • Гамильтонов цикл
  • Рёберный граф/ Линейный граф
  • Сильно связные компоненты
  • Главный подграф, Покрытие вершин, Задача коммивояжёра – Алгоритм аппроксимации
Продвинутые криптографические алгоритмы:
  • Алгоритм Кнута-Морриса-Пратта
  • Алгоритм Рабина-Карпа
  • Префиксные и суффиксные деревья
  • Автоматизация суффиксов – Алгоритм Укконена
Высшая математика
  • Быстрое преобразование Фурье
  • Проверка простоты
  • Вычислительная геометрия – Задача поиска ближайшей пары, Диаграмма Вороного, Выпуклая оболочка множества точек
Общие продвинутые темы:
  • Выполнение обхода всех комбинаций/перестановок
  • Поразрядная обработка
 
Похожие темы
Support81 Семь ключей к данным: какие уязвимости самые «модные» у киберпреступников Новости в сети 0
Support81 Gh0st RAT, RedTail, XMRig: какие ещё угрозы могут проникнуть на ваш компьютер из-за уязвимости в PHP Новости в сети 0
Support81 Адаптивный фишинг отключает бдительность жертв: какие приёмы используют злоумышленники Новости в сети 0
Support81 Пять лет под присмотром кибершпионов: какие APT-группировки атакуют компании в России и СНГ Новости в сети 0
Support81 Мошенничество с KeePass: какие последствия ждут жертв вредоносной рекламы? Новости в сети 0
Support81 Слежка без границ: какие ещё тайны скрывает знаменитый архив Эдварда Сноудена Новости в сети 0
R Kali linux какие бывают Свободное общение и флейм 1
C дополнения браузера, какие есть для безопасности Анонимность и приватность 3
S Сбор MAC-адресов устройств. Подскажите у кого какие идеи есть. Уязвимости и взлом 0
B Какие существуют аналоги cctools ? Готовый софт 0
G Кто какие языки программирования знает? Программирование 25
Support81 «Вас заменят алгоритмы»: Билл Гейтс вынес приговор врачам, педагогам и творческим профессиям Новости в сети 0
K Мастер-класс «Инстаграм Истории: Обмани Алгоритмы Инстаграма» Раздачи и сливы 0
K Хороший А. - Алгоритмы спецслужб для построения сетей деловых связей Раздачи и сливы 0
Support81 Хотите читать платные статьи бесплатно? Браузеры Comet или Atlas помогут. И вам ничего не нужно делать Новости в сети 0
A есть способы взлома камер которым приложение нужно? Уязвимости и взлом 0
Support81 Из инфлюенсеров в информаторы: что нужно знать владельцам страниц с 10 тысячами подписчиков Новости в сети 0
Emilio_Gaviriya Статья AlienVault: Всё, что вам нужно знать о платформе для обнаружения угроз. Уязвимости и взлом 0
Mr.Prime Ищу специалиста по деанону телеги. Есть приватный канал, нужно узнать владельца. Предоставляю работу. Ищу специалиста. 0
X СРОЧНО - Нужно проверить состояние обьекта, г. Хабаровск. Белая, 1000р Предоставляю работу. Ищу специалиста. 1
Support81 Россия вступает в гонку спутникового интернета: что нужно знать о проекте “Бюро 1440" Новости в сети 3
N Нужно изменить название софта Предоставляю работу. Ищу специалиста. 1
P Интересно Нужно в Германии получить письмо и переслать в РФ Предоставляю работу. Ищу специалиста. 1
G Нужно спарсить с сайта конкурента базу клиентов Предоставляю работу. Ищу специалиста. 1
slovokek НУЖНО НАПИСАТЬ БРУТ Предоставляю работу. Ищу специалиста. 1
Eteriass Интересно Атака "Злой двойник" и все что нужно про него знать Уязвимости и взлом 7
Denik Интересно Все, что нужно знать о DoS атаках Уязвимости и взлом 6
L Интересно Биткоин готовится к потенциальному прорыву около $7 200, но нужно быть внимательными Новости в сети 1
N нужно подтверждение акк госуслуг Предоставляю работу. Ищу специалиста. 1
D Нужно взломать архив rar Предоставляю работу. Ищу специалиста. 2
V Нужно узнать секреты или поймать на лжи? Ищу работу. Предлагаю свои услуги. 0
K Нужно дописать сайт! Ищу работу. Предлагаю свои услуги. 0
N Приветствую! Ребята, выручайте! Нужно слить пару схем с Sharewood.biz Раздачи и сливы 6
G Все что нужно знать о взломах ВКонтакте и других соц. сетей Полезные статьи 1
Z нужно несколько аккаунтов вк Раздачи и сливы 3
S Нужно слить БД форума Предоставляю работу. Ищу специалиста. 13
Admin ttr.casino B&C [PK] (VT на него не нужно) Готовый софт 0

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