Ниже следует перечень свойств, которыми должны обладать алгоритмы и краткие пояснения к ним.
Массовость. Возможность применять один и тот же алгоритм для решения целого класса однотипных задач с различными исходными данными.
Понятность. Каждый алгоритм создается в расчете на некоторого исполнителя. Для того чтобы исполнитель мог выполнить алгоритм, необходимо, чтобы он его понимал и мог выполнить каждое его предписание.
Дискретность. Проявляется в самой структуре алгоритма, так как его реализация расчленяется на отдельные шаги, выполнение которых исполнителем не вызывает сомнений. Выполнение каждого очередного шага начинается после завершения предыдущего.
Конечность. Исполнение алгоритма заканчивается после выполнения конечного числа шагов.
Детерминированность. Путь решения задачи определен вполне однозначно, на любом шаге не допускаются никакие неоднозначности и недомолвки. Означает, что алгоритм рассчитан на механическое выполнение. Именно это свойство дает возможность поручить исполнение алгоритма автомату.
Результативность означает содержательную определенность результата на каждом шаге и в итоге применения всего алгоритма.
Условно все алгоритмы подразделяются по характеру выполняемых операций, используемой структуре управления ходом вычислительного процесса и др. По характеру выполняемых операций алгоритмы могут быть численными, логическими, численно-логическими (смешанными). По используемым структурам управления ходом вычислительного процесса алгоритмы подразделяются на алгоритмы линейной структуры, разветвляющейся структуры, циклической структуры, вложенной циклической и смешанной структуры.
Оценивая алгоритм по числу выполняемых действий, необходимых для получения результата, можно получить сведения о будущем процессе вычисления. Такая оценка алгоритма характеризует его временную сложность. Емкостная сложность алгоритма определяет объем памяти, требуемый для его реализации.
Одновременно с разработкой алгоритма должна быть определена структура исходной, промежуточной и выходной информации для данной задачи, что позволяет в дальнейшем выбрать язык программирования.