Другие языки программирования и технологии

Список алгоритмов, которые должен знать каждый программист?

Алгоритмы реализуются в шаблонах проектирования. Они бывают порождающие, структурные и поведенческие. Всего около 20. Их желательно знать. Сами же алгоритмы учить ни к чему.
!!
! ! ! *_Баха_* ! ! !
4 947
Лучший ответ
Толя Орсик Что-то вроде паттернов?
Знать никакие не должен (это не стихи, чтобы их заучивать), а вот понимать - кучу всяких (т. к. на основе этого понимания строятся потом свои)
Нахождение tg α
Андрей Голубев
Андрей Голубев
42 218
с линейных структур данных и алгоритмов
Массивы
Связный список
Стек
Очереди
Перейдем к базовым алгоритмам
Сортировка — Сортировка слиянием, Сортировка вставками, Быстрая сортировка, Несколько взаимных перестановок.
Умножение матриц (Не обязательно реализовывать, главное — знать алгоритм)
Основные алгоритмы просеивания
Беззнаковая математика, включая умножение и деление
Алгоритм Евклида для нахождения НОД (наибольший общий делитель), Модульная инверсия, Быстрое возведение в степень
Числа Фибоначчи с матричным умножением
Нормальное распределение и математическое ожидание
Статистика – среднее вероятностное значение случайной величины, медиана, дисперсия, теорема Байеса
Также можно изучить популярные алгоритмические методы:
Алгоритмы декомпозиции – Бинарный поиск, Нахождение подмассива с наибольшей суммой элементов
Жадные алгоритмы – Выбор задач, кодирование по алгоритму Хаффмана
Динамичное программирование – Цепное матричное умножение, Алгоритм решения задачи по укладке ранца
Линейное программирование – Максимизация параметра, Линейное время сортировки
Криптографические алгоритмы – Алгоритм Манакера по нахождению длиннейшей подстроки-палиндрома, алгоритм нахождения наибольшей общей подпоследовательности (LSC), расстояние Левенштейна
Теперь перейдем к типичным нелинейным структурам данных
Деревья – Бинарное дерево, Дерево общего вида, Наименьший общий предок
Бинарное дерево поиска – Симметричный обход, Обход по уровням, Нахождение k’ого наибольшего элемента, Диаметр, Глубина, Количество узлов и т. д.
Динамическая память – Динамический массив, Двоичная куча, Пирамидальная сортировка
Алгоритм объединения-поиска
Хеш-таблица – Метод нахождения коллизий (Linear Probing), Открытая адресация, Предотвращение коллизий
Рассмотрим графы
Список смежных вершин графа, Матрица смежности графа, Взвешенные рёбра графа
Основные алгоритмы обхода – Поиск в ширину, Поиск в глубину и т. д.
Алгоритмы нахождения кратчайшего пути — Алгоритм Дейкстры, Алгоритм Флойда-Уоршелла, Алгоритм Беллмана-Форда
Минимальное остовное дерево — Алгоритм Крускала, Алгоритм Прима
К данному моменту вы должны быть хорошо знакомы с программированием, так как для дальнейшего прочтения и углубления в данную тему вы должны знать больше, чем студент.
Усложнённые деревья и графы
Сбалансированные деревья – AVL-дерево, Красно-черное дерево
Heavy-light декомпозиция, Б-деревья, Дерево квадрантов
Усложнённый граф – Минимальный разрез, Максимальный поток
Максимальное покрытие – Теорема о свадьбах
Гамильтонов цикл
Рёберный граф/ Линейный граф
Сильно связные компоненты
Главный подграф, Покрытие вершин, Задача коммивояжёра – Алгоритм аппроксимации
Продвинутые криптографические алгоритмы:
Алгоритм Кнута-Морриса-Пратта
Алгоритм Рабина-Карпа
Префиксные и суффиксные деревья
Автоматизация суффиксов – Алгоритм Укконена
Высшая математика
Быстрое преобразование Фурье
Проверка простоты
Вычислительная геометрия – Задача поиска ближайшей пары, Диаграмма Вороного, Выпуклая оболочка множества точек
Общие продвинутые темы:
Выполнение обхода всех комбинаций/перестановок
Поразрядная обработка
AB
Ashat Bolat
11 427
Я бы поискал более-менее понятный вам и ортогональный каталог алгоритмов. Есть сайты и книжки. Навскидку нашел http://algolist.manual.ru/ . Также можете посмотреть например на ОЗОНе аннотацию к книжке "Алгоритмы. Руководство по разработке", в которой есть каталог 75 базовых алгоритмов, из которых можно как из кирпичиков выстроить архитектуру вашего приложения. Есть еще классический труд Никлауса Вирта "алгоритмы и структуры данных", но он имхо более учебный, чем для боевого применения.
Костян Карцев
Костян Карцев
8 520
Ну для начала
Что бы выбрать английский язык нужно нажать одновременно сочетание клавиш ALT + Shift
Виталий Зотов А у меня на компе для смены языка нужно нажать Ctrl+Shift. И изначально стоит английский.

Так что твой алгоритм не универсален!
Виталий Зотов Хороший программист - тот, кто учитывает ВСЕ варианты!!!