1.2 算法相关概念的区别
算法其实是一个很抽象的概念,往往需要依托于具体的实现方法才能体现其价值,如在计算机编程中的算法、数值计算中的算法等。本书重点讲解的便是算法在计算机编程中的应用。算法具有抽象性,容易混淆,这里有必要说明一些基本的概念。
1.2.1 算法与公式的关系
根据前面所谈到的算法,读者很容易联想到数学中的公式。公式用于解决某类问题,有特定的输入和结果输出,能在有限时间内完成,并且公式都是完全可以操作计算的。公式确实提供了一种算法,但算法绝不完全等于公式。
公式是一种高度精简的计算方法,可以认为就是一种算法,它是人类智慧的结晶。而算法并不一定是公式,算法的形式可以比公式更复杂,解决的问题更加广泛。
1.2.2 算法与程序的关系
正如前面所述,算法依托于具体的实现方式。虽然一提到算法,就使人联想到计算机程序设计,但算法并非仅用于此。例如,在传统的笔算中,通过纸和笔按照一定的步骤完成的计算也是算法的应用;在速记中,人们通过特殊的方法来达到快速牢固记忆的目的,这也是一种算法的应用。
在计算机程序设计中,算法的体现更广泛,几乎每个程序都需要用到算法,只不过有些算法比较简单,有些算法比较复杂而已。
算法和程序设计语言是不同的。目前比较流行的程序设计语言,包括Visual Basic、C、C++、C#、Java、Pascal、Delphi、PB等。程序设计语言是算法实现的一种形式,也是一种工具。读者往往需要首先熟悉程序设计语言的语法格式,然后才能使用这种程序语言编写合适的算法实现程序。学习一门程序设计语言是比较容易的,难的是如何正确合理地运用算法来编写求解问题。
1.2.3 算法与数据结构的关系
数据结构是数据的组织形式,可以用来表征特定的对象数据。在计算机程序设计中,操作的对象是各式各样的数据,这些数据往往拥有不同的数据结构,如数组、结构体、联合、指针和链表等。因为不同的数据结构所采用的处理方法不同,计算的复杂程度也不同,因此算法往往依赖于某种数据结构。也就是说,数据结构是算法实现的基础。
计算机科学家尼克劳斯·沃思(Nikiklaus Wirth)曾提出了一个著名的公式:数据结构+算法=程序。后来,他为此著有《数据结构+算法=程序》一书。从中可以看到算法和数据结构的关系。
学习了前面的介绍,读者应对程序、算法、数据结构、程序设计语言有一个比较深刻的认识。如果给出一个公式,则可以表述成如下形式:
数据结构+算法+程序设计语言=程序
这里,数据结构往往表示的是处理的对象,算法是计算和处理的核心方法,程序设计语言是算法的实现方法。这几者的综合便构成一个实实在在的程序。
注意:算法是解决问题的一个抽象方法和步骤,同一个算法在不同的语言中具有不同的实现形式,这依赖于数据结构的形式和程序设计语言的语法格式。