WEB开发网
开发学院软件开发数据结构 什么是算法 阅读

什么是算法

 2007-05-16 11:57:16 来源:WEB开发网   
核心提示:什么是程序?程序= 数据结构+ 算法,对于面向对象程序设计,什么是算法,强调的是数据结构,而对于面向过程的程序设计语言如C、P a s c a l、F O RT R A N等语言,通过使用相同变量等方式求得形式的统一,然后简练地用循环解决,主要关注的是算法,掌握算法
什么是程序?程序= 数据结构+ 算法。

对于面向对象程序设计,强调的是数据结构,而对于面向过程的程序设计语言如C、P a s c a l、F O RT R A N等语言,主要关注的是算法。掌握算法,也是为面向对象程序设计打下一个扎实的基础。那么,什么是算法呢?

人们使用计算机,就是要利用计算机处理各种不同的问题,而要做到这一点,人们就必须事先对各类问题进行分析,确定解决问题的具体方法和步骤,再编制好一组让计算机执行的指令即程序,交给计算机,让计算机按人们指定的步骤有效地工作。这些具体的方法和步骤,其实就是解决一个问题的算法。根据算法,依据某种规则编写计算机执行的命令序列,就是编制程序,而书写时所应遵守的规则,即为某种语言的语法。

由此可见,程序设计的关键之一,是解题的方法与步骤,是算法。学习高级语言的重点,就是掌握分析问题、解决问题的方法,就是锻炼分析、分解,最终归纳整理出算法的能力。与之相对应,具体语言,如C语言的语法是工具,是算法的一个具体实现。所以在高级语言的学习中,一方面应熟练掌握该语言的语法,因为它是算法实现的基础,另一方面必须认识到算法的重要性,加强思维训练,以写出高质量的程序。

下面通过例子来介绍如何设计一个算法:

[例1-4] 输入三个数,然后输出其中最大的数。

首先,得先有个地方装这三个数,我们定义三个变量A、B、C,将三个数依次输入到A、B、C中,另外,再准备一个M A X装最大数。由于计算机一次只能比较两个数,我们首先把A与B比,大的数放入M A X中,再把M A X 与C比,又把大的数放入M A X中。最后,把M A X输出,此时M A X中装的就是A、B、C三数中最大的一个数。算法可以表

示如下:

1) 输入A、B、C。

2) A与B中大的一个放入M A X中。

3) 把C与M A X中大的一个放入M A X中。

4) 输出M A X,M A X即为最大数。

其中的2 )、3 )两步仍不明确,无法直接转化为程序语句,可以继续细化:

2) 把A与B中大的一个放入M A X中,若A > B,则MAX ←A;否则MAX ←B。

3) 把C与M A X中大的一个放入M A X中,若C > M A X,则M A X←C。

于是算法最后可以写成:

1) 输入A,B,C。

2) 若A > B,则MAX ←A;

否则M A X←B。

3) 若C > M A X,则M A X←C。

4) 输出M A X,M A X即为最大数。
这样的算法已经可以很方便地转化为相应的程序语句了。

[例1-5] 猴子吃桃问题:有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办理,吃掉剩下桃子的一半另加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?

此题粗看起来有些无从着手的感觉,那么怎样开始呢?假设第一天开始时有a1只桃子,第二天有a2只,. . .,第9天有a9只,第1 0天是a1 0只,在a1, a2, . . .,a1 0中,只有a1 0= 1是知道的,现要求a1,而我们可以看出,a1, a2, . .,a1 0之间存在一个简单的关系:

a9= 2 * ( a1 0+ 1 )

a8= 2 * ( a9+ 1 )

a1= 2 * ( a2+ 1 )

也就是:ai= 2 * ( ai + 1+1) i=9,8,7,6,...,1

这就是此题的数学模型。

再考察上面从a9,a8直至a1的计算过程,这其实是一个递推过程,这种递推的方法在计算机解题中经常用到。另一方面,这九步运算从形式上完全一样,不同的只是ai的下标而已。由此,我们引入循环的处理方法,并统一用a0表示前一天的桃子数,a1表示后一天的桃子数,将算法改写如下:

1) a1=1; {第1 0天的桃子数,a1的初值}

i = 9。{计数器初值为9}

2) a0= 2 * ( a1+ 1 )。{计算当天的桃子数}

3) a1= a0。{将当天的桃子数作为下一次计算的初值}

4) i=i-1。

5) 若i > = 1,转2 )。

6) 输出a0的值。

其中2 )~5 )步为循环。

这就是一个从具体到抽象的过程,具体方法是:

1) 弄清如果由人来做,应该采取哪些步骤。

2) 对这些步骤进行归纳整理,抽象出数学模型。

3) 对其中的重复步骤,通过使用相同变量等方式求得形式的统一,然后简练地用循环解决。

算法的描述方法有自然语言描述、伪代码、流程图、N - S图、PA D 图等。

1 2 3  下一页

Tags:什么 算法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接