常用算法深入学习实录
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 计算机中的算法

众所周知,做任何事情都需要一定的步骤。计算机虽然很神奇,能够帮助我们解决很多问题,但是计算机在解决问题时,也需要遵循一定的步骤。在编写程序实现某个项目功能的时候,也需要遵循一定的算法。算法的地位非常重要,重要得号称是程序的“灵魂”。在本节的内容中,我们将一起探寻算法在计算机中的地位,探索程序“灵魂”在计算机中的基本应用知识。

1.2.1 认识计算机中的算法

计算机中的算法可分为如下两大类。

(1)数值运算算法:求解数值。

(2)非数值运算算法:事务管理领域。

假设有下面的运算:

1×2×3×4×5

为了计算上述运算结果,最普通的做法是按照如下步骤进行计算。

第1步:先计算1×2,得到结果2。

第2步:将步骤1得到的乘积2乘以3,计算得到结果6。

第3步:将6再乘以4,计算得到结果24。

第4步:将24再乘以5,计算得到结果120。

最终计算结果是120,上述第1步到第4步的计算过程就是一个算法。如果想用编程的方式来解决上述运算,通常会使用如下算法来实现。

第1步:假设定义t=1。

第2步:使i=2。

第3步:使t×i,乘积仍然放在变量t中,可表示为t×i→t。

第4步:使i的值+1,即i+1→i。

第5步:如果i≤5,返回重新执行步骤3以及其后的步骤4和步骤5;否则,算法结束。

由此可见,上述算法方式就是数学中的“n!”公式。既然有了公式,在具体编码的时候,只需使用这个公式就可以解决上述运算的问题。

再看下面的一个数学应用问题。

假设有80个学生,要求打印输出成绩在60分以上的学生。

在此设用n来表示学生学号,ni表示第i个学生的学号;cheng表示学生成绩,chengi表示第i个学生的成绩。根据题目要求,可以写出如下算法。

第1步:1→i。

第2步:如果chengi≥60,则打印输出ni和chengi,否则不打印输出。

第3步:i+1→i。

第4步:如果i≤80,返回步骤2;否则,结束。

由此可见,算法在计算机中的地位十分重要。所以在面对一个项目应用时,一定不要立即埋头苦干地编写代码,而是要仔细思考解决这个问题的算法是什么。在想出算法之后,就可以以这个算法为指导思想进行编码工作了。

1.2.2 为什么是程序的“灵魂”

在当今程序员的世界,算法已经成为衡量一名程序员水平高低的参照物。高深的程序员都会看重数据结构和算法的作用,水平越高,就越能理解算法的重要性。算法不仅仅是运算工具,它更是程序的“灵魂”。在现实项目开发过程中,很多实际问题需要精心设计的算法才能有效解决。对个人来讲,对算法的掌握也是区别于他人、保持竞争力的重要方面。

算法是计算机处理信息的本质,因为计算机程序本质上是一个算法,告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪水或打印学生的成绩单。一般地,当算法在处理信息时,数据会从输入设备读取,并写入输出设备,也可能保存起来供以后使用。

著名计算机科学家沃思提出了下面的公式:

数据结构+算法=程序

实际上,一个程序应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言来表示。因此,可以用下面的公式表示:

程序=算法+数据结构+程序设计方法+语言和环境

在上述公式的四个方面中,算法是“灵魂”,数据结构是加工对象,语言是工具,编程需要采用合适的方法。算法来解决“做什么”和“怎么做”的问题。

实际上程序中的操作语句就是算法的体现,所以说,不了解算法就谈不上程序设计。

数据是操作对象,对操作的描述即操作步骤,操作的目的是对数据进行加工处理得到期望的结果。举个通俗点的例子,厨师做菜肴,需要有菜谱。菜谱上一般应包括:

(1)配料(数据)。

(2)操作步骤(算法)。

这样,厨师面对相同的一些原料,就可以加工出不同风味的菜肴。