算法零基础一本通(Python版)
上QQ阅读APP看书,第一时间看更新

1-1 计算机的算法

在科技时代,我们常使用计算机解决某些问题。为了让计算机可以了解人类的思维,我们将解决问题的方法用特定方式告诉计算机,这个特定方式就是计算机可以理解的程序语言。计算机会依据程序语言的指令,一步一步完成工作。

当使用程序语言解决工作上的问题时,我们需要知道应该使用什么方法,可以更快速、有效地完成工作。

例如,有一系列数字,我们想要找到特定数字,是否有更好的方法?

假设我们要找的数字是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本物理科学专论之一。

所以我们也可以将算法过程与结果归纳做下列的定义:

输入 + 算法 = 输出