(一)算法
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
算法的重要特性:
- 有穷性
一个算法必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成。 - 确定性
算法中的每一条指令必须有确切的含义,理解时不会产生二义性。 - 可行性
算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。 - 输入
一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。 - 输出
一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。
(二)算法设计
在设计算法时,通常要考虑正确性、可读性、健壮性和高效性等。
经常采用的算法设计技术主要有:
- 分治法
- 动态规划法
- 贪心法
- 回溯法
- 分支限界法
- 概率算法
- 近似算法
(三)算法分析
在对算法进行分析时,首先要考虑的是算法的正确性、可靠性、简单性和易理解性,其次是算法的时间复杂度和空间复杂度。
(四)算法的表示
常用的表示算法的方法有:
- 自然语言
最大的优点是容易理解,缺点是容易出现二义性,并且算法通常冗长。 - 流程图
优点是直观易懂,缺点是严密性不如程序设计语言,灵活性不如自然语言。 - 程序设计语言
优点是可以用计算机直接执行,缺点是抽象性差,使得算法设计者拘泥于描述算法的具体细节,忽略了好算法和正确逻辑的重要性。 - 伪代码
介于自然语言和程序设计语言之间的方法,表达力强,逻辑简明扼要。