清华大学出版社 TSINGHUA UNIVERSITY PRESS 第2章 程序的灵魂— 算法 2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5结构化程序设计方法 习题
2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法 习题 第2章 程序的灵魂——算法
清华大学出版社 TSINGHUA UNIVERSITY PRESS 一个程序应包括以下两方面内容: (1)对数据的描述。在程序中要指定数据的类型和数 据的组织形式,即数据结构(data structure)。 (2)对操作的描述。即操作步骤,也就是算法 (algorithm)。 数据是操作的对象,操作的目的是对数据进行加工 处理,以得到期望的结果。作为程序设计人员, 必须认真考虑和设计数据结构和操作步骤(即算法)。 因此,著名计算机科学家沃思Nikiklaus Wirth)提 出一个公式 数据结构+算法=程序
一个程序应包括以下两方面内容: (1) 对数据的描述。在程序中要指定数据的类型和数 据的组织形式,即数据结构(data structure)。 (2) 对操作的描述。即操作步骤, 也就是算法 (algorithm)。 数据是操作的对象,操作的目的是对数据进行加工 处理,以得到期望的结果。作为程序设计人员, 必须认真考虑和设计数据结构和操作步骤(即算法)。 因此,著名计算机科学家沃思(Nikiklaus Wirth)提 出一个公式 数据结构 + 算法 = 程序
清华大学出版社 TSINGHUA UNIVERSITY PRESS 实际上,一个程序除了以上两个主要要素之外,还 应当采用结构化程序设计方法进行程序设计,并 且用某一种计算机语言表示。因此,可以这样表 示: 程序=算法+数据结构+程序设计方法+语言工具 和环境 也就是说,以上4个方面是一个程序设计人员所应具 备的知识。在设计一个程序时要综合运用这几方 面的知识。在这4个方面中,算法是灵魂,数据结 构是加工对象,语言是工具,编程需要采用合适 的方法。算法是解决“做什么”和“怎么做”的 问题。程序中的操作语句,实际上就是算法的体 现。显然,不了解算法就谈不上程序设计
实际上,一个程序除了以上两个主要要素之外,还 应当采用结构化程序设计方法进行程序设计,并 且用某一种计算机语言表示。因此,可以这样表 示: 程序 = 算法 + 数据结构 + 程序设计方法 + 语言工具 和环境 也就是说,以上4个方面是一个程序设计人员所应具 备的知识。在设计一个程序时要综合运用这几方 面的知识。在这4个方面中,算法是灵魂,数据结 构是加工对象,语言是工具,编程需要采用合适 的方法。算法是解决“做什么”和“怎么做”的 问题。程序中的操作语句,实际上就是算法的体 现。显然,不了解算法就谈不上程序设计
清华大学出版社 TSINGHUA UNIVERSITY PRESS 我们的目的是使读者通过学习本书,能够知道怎样 编写一个C程序,并且能够编写出不太复杂的C程 序。书中将通过一些实例把以上4个方面的知识结 合起来,介绍如何编写一个C程序。 由于算法的重要性,在本章中先介绍有关算法的初 步知识,以便为后面各章的学习建立一定的基础
我们的目的是使读者通过学习本书,能够知道怎样 编写一个C程序,并且能够编写出不太复杂的C程 序。书中将通过一些实例把以上4个方面的知识结 合起来,介绍如何编写一个C程序。 由于算法的重要性,在本章中先介绍有关算法的初 步知识,以便为后面各章的学习建立一定的基础
清华大学出版社 TSINGHUA UNIVERSITY PRESS 2.1算法的概念 从事各种工作和活动,都必须事先想好进行的步骤, 然后按部就班地进行,才能避免产生错乱。 不要认为只有“计算”的问题才有算法。广义地说, 为解决一个问题而采取的方法和步骤,就称为 “算法”。 对同一个问题,可以有不同的解题方法和步骤。方 法有优劣之分。有的方法只需进行很少的步骤, 而有些方法则需要较多的步骤。一般说,希望采 用简单的和运算步骤少的方法。因此,为了有效 地进行解题,不仅需要保证算法正确,还要考虑 算法的质量,选择合适的算法
2.1 算 法 的 概 念 从事各种工作和活动,都必须事先想好进行的步骤, 然后按部就班地进行,才能避免产生错乱。 不要认为只有“计算”的问题才有算法。广义地说, 为解决一个问题而采取的方法和步骤,就称为 “算法”。 对同一个问题,可以有不同的解题方法和步骤。方 法有优劣之分。有的方法只需进行很少的步骤, 而有些方法则需要较多的步骤。一般说,希望采 用简单的和运算步骤少的方法。因此 ,为了有效 地进行解题,不仅需要保证算法正确,还要考虑 算法的质量,选择合适的算法