Написанный нами алгоритм должен быть в первую очередь корректным, т.е. завершаться получением правильного ответа для задачи. Если это выполняется, то имеет смысл подумать о том, насколько эффективно он использует предоставляемые ему ресурсы.
Алгоритмы обычно оценивают по времени выполнения и по используемой памяти.
Такие оценки называют вычислительной сложностью алгоритма. Чем выше вычислительная сложность, тем дольше работает алгоритм и/или больше памяти использует.
Выделяют два вида сложности: временная сложность (time complexity) и пространственная сложность (space complexity)