在科技时代,我们常使用计算机解决某些问题。为了让计算机可以了解人类的思维,我们将解决问题的方法用特定方式告诉计算机,这个特定方式就是计算机可以理解的 程序语言 。计算机会依据程序语言的指令,一步一步完成工作。
当使用程序语言解决工作上的问题时,我们需要知道应该使用什么方法,可以更快速、有效地完成工作。
例如 ,有一系列数字,我们想要找到特定数字,是否有更好的方法?
假设我们要找的数字是 3 ,如果我们从左到右找寻,需要找寻5次;如果我们从中间找寻,只要1次就可以找到。其实找寻的方法,就是 算法 。
例如 ,有一系列数字,我们想将这一系列数字从小到大排序。
为了完成上述从小到大将数字排列,也有许多方法,这些方法也可以称为 算法 。
目前世界公认的第一个算法是 欧几里得算法 ,出现在 欧几里得 (Euclid,公元前325—前265年)所著的《 几何原本 》(古希腊语: ),这是一本数学著作,也是现代数学的基础。著作共有13卷,在第8卷中就有讨论 欧几里得 算法,这个算法又称 辗转相除法 。 欧几里得 是 古希腊数学家 ,又被称为 几何学之父 。
现代美国有一位非常著名的计算机科学家 唐纳德·欧文·克努特 (Donald Ervin Knuth,1931—),他是美国斯坦福大学荣誉教授退休,1972年 图灵奖 (Turing Award)得主,在他所著的《 计算机程序设计的艺术 》( The Art of Computer Programming )中,对 算法 (algorithm)做了特征归纳:
(1) 输入 :一个算法必须有0个或更多的输入。
(2) 有限性 :一个算法的步骤必须是有限的。
(3) 明确性 :算法描述必须是明确的。
(4) 有效性 :算法的可行性可以获得正确的执行结果。
(5) 输出 :输出就是计算结果,一个算法必须要有1个或更多的输出。
注 唐纳德的著作 The Art of Computer Programming 曾被《 科学美国人 》( Scientific American )杂志评估为与 爱因斯坦 的《 相对论 》并论的20世纪最重要的12本物理科学专论之一。
所以我们也可以将算法过程与结果归纳做下列的定义:
输入 + 算法 = 输出