Skip to content
难度基础(★)
建议时长45分钟

14.1 算法的特性

算法是解决问题的步骤序列。课程把它称为“程序的灵魂”:同一个数据结构,不同算法会带来不同的时间效率和空间效率。算法可以用自然语言、流程图、伪代码或程序设计语言表示,软考下午算法题常用 C 语言风格代码。

算法的表达方式

表达方式特点考试关联
自然语言接近日常描述题干常用自然语言描述算法过程
流程图强调控制流程早期和基础题可能出现
伪代码介于语言和代码之间近年出现较少
程序设计语言可执行或接近可执行下午算法应用题常见 C 语言代码填空

五个基本特性

特性含义易混点
有穷性有穷步后结束,且每一步在有穷时间内完成排除死循环
确定性每条指令含义明确,无二义性排除模棱两可的描述
可行性/有效性每一步都能有效执行,执行有限次可得到结果不等同于有穷性
输入可以有 0 个或多个输入没有输入也可以运行
输出至少有 1 个输出没有输出无法体现结果

有穷性与可行性不要混

课程特别提醒:很多同学看到“有限次”就以为是有穷性。更准确地看:

概念关注点
有穷性算法整体会结束,每一步耗时有限
可行性每一步操作是实际可执行的,不是非法或不可实现的动作

例如“不断循环直到永远”违反有穷性;“把一个数除以 0 得到正常结果”违反可行性。

输入可以没有,输出必须有

算法可以没有外部输入,例如输出系统当前时间、生成一个固定表格。但算法必须有输出,否则无法体现求解结果,也无法判断算法是否完成。

本节例题

单选
关于算法特性,下列说法正确的是:

自查清单

  1. 能否区分有穷性与可行性?
  2. 能否解释为什么算法可以没有输入?
  3. 能否识别“含义模糊”违反确定性?