Можно выделить несколько типов задач, которые считаются наиболее важными из-за их практического значения или каких-то свойств, представляющих особый интерес для исследования:
Задача сортировки заключается в упорядочении заданной последовательности каких-либо элементов в возрастающем порядке по ключу (некоторой части элемента). Упорядочение позволяет ускорить поиск информации. Часто сортировка используется как вспомогательный этап в некоторых алгоритмах.
Не существует универсального алгоритма сортировки, который бы наилучшим образом подходил для всех случаев. Хотя для произвольных данных доказана эффективность n⋅log2n операций, но для ограниченного диапазона ключей есть алгоритм c эффективностью n, а для небольших n алгоритм c эффективностью n2 может работать быстрее из-за больше его простоты.
Существуют алгоритмы сортировки для оперативной и внешней памяти, обеспечивающие устойчивость (сохранение порядка элементов с одинаковыми ключами) и нет, использующие дополнительную память и нет.
Задача поиска связана с нахождением заданного значения (ключа поиска) среди заданного множества (мультимножества).
Для решения задачи поиска также не существует единого алгоритма, который бы наилучшим образом подходил для всех случаев. В первую очередь алгоритм поиска зависит от представления множества в программе, которое в свою очередь связано с количеством возможных операций изменения множества. Необходимо определять совместно структуры данных и алгоритмы так, чтобы достигалось равновесие между требованиями, выдвигаемыми к каждой операции.
Для задач, связанных с обработкой текста, были разработаны специальные алгоритмы. К задаче поиска подстрок может быть сведена задача поиска в базе данных генетической информации.
Алгоритмы на графах являются одной из наиболее интересных для исследования областей, так как с помощью графов можно смоделировать довольно большое количество процессов, происходящих в реальной жизни, например, функционирование транспортных и коммуникационных сетей, календарное планирование проекта и т.д.
К классическим задачам теории графов относятся: обход графа, топологическая сортировка, раскраска графа, поиск кратчайшего пути, максимального потока, минимального остова, задача о назначениях.
Суть комбинаторных задач сводится к нахождению такого комбинаторного объекта, как перестановка, сочетание, размещение или подмножество, который бы удовлетворял определенным ограничениям и обладал заданными свойствами, например, позволял максимизировать (минимизировать) некоторую функцию.
Примером такой задачи является задача коммивояжера, которая заключается в нахождении кратчайшего пути между n городами, каждый из которых он должен посетить только один раз.
Не существует алгоритмов для поиска точного решения подобных задач за приемлемое время, так как количество комбинаторных объектов обычно очень быстро растет при увеличении масштаба задачи.
Геометрические задачи возникают в компьютерной графике, робототехнике при работе с такими геометрическими объектами как точки, линии, многоугольники.
Решение некоторых из них возможно только при помощи алгоритмов, например, построение выпуклой оболочки.
Численные задачи имеют дело с математическими объектами, которые по своей сути являются непрерывными. Примерами таких задач являются: решение уравнений и систем уравнений, вычисление определенных интегралов и значений функций и т.д.
Подавляющее большинство таких задач может быть решено только приблизительно с помощью итерационного алгоритма. Еще одна принципиальная трудность заключается в том, что при решении подобных задач обычно нужно выполнять операции с вещественными числами, которые в компьютере могут быть представлены только с определенной погрешностью. Выполнение большого количества арифметических операций может привести к накоплению ошибок округления, что в свою очередь может кардинально повлиять на точность получаемых результатов.