可以将算法定义为定义明确的计算过程, 该过程将某些值或一组值作为输入, 并产生某些值或一组值作为输出。因此, 算法是将输入转换为输出的一系列计算步骤。
它描述了用于实现输入-输出关系的特定计算过程。
例如, 我们需要将数字序列按升序排序。这是我们定义排序问题的方式。
输入:
A sequence of n number (a1, a2, ......an)
输出:
A permutation (reordering) (a'1, a'2 .... a'n) of the input sequence such that (a'1 ≤ a'2 ≤ ....≤ a'n)
算法必须具有以下属性:
- 正确性:应根据算法要求产生输出
- 有限性:必须在执行了有限数量的指令后才能完成算法。
- 不含歧义:必须定义每个步骤, 只有一个解释。
- 序列的定义:每个步骤必须具有唯一定义的前后步骤。必须注意第一步和最后一步。
- 输入/输出:必须说明所需输入和结果的数量和分类。
- 可行性:执行每条指令必须可行。
- 灵活性:还可以在不花太多精力的情况下对算法进行更改。
- 高效-效率通常是根据时间和空间来衡量的, 而该时间和空间需要实施该算法, 因此该算法在可接受的开发时间范围内使用了很少的运行时间和内存空间。
- 独立性:算法应专注于什么是输入, 输出以及如何在不知道其定义语言的情况下得出输出。因此, 可以说该算法与语言无关。