什么是算法
在这一模块中,我们将介绍算法的定义和分析方法,并讲解一些经典算法的 C 语言实现。
数学基础要求
本模块假定读者有一定的数学水平:基本的算术 + 集合论 + 概率论 + 矩阵。
《算法导论》附录 A~D 中有对这部分数学的简明扼要的讲解。
1. 基本概念
1.1 定义
算法是为了解决某类问题而规定的一个有限长的操作序列。
1.2 特征
- 有穷性:一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。
- 确定性:对千每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行,不会产生二义性。
- 可行性:算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
- 输入:一个算法有零个或多个输入。当用函数描述算法时,输入往往是通过形参表示的,在它们被调用时,从主调函数获得输入值。
- 输出:一个算法有一个或多个输出,它们是算法进行信息加工后得到的结果
1.3 一个“公式”
1.4 算法的表示
- 自然语言
- 流程图和 N-S 图
- 伪代码(《算法导论》中采用这种方法)