再上一篇:6 .2 .2 设计程序算法
上一篇:6 .2 .3 测试程序算法
主页
下一篇:6 .4 算法的表达方式
再下一篇:6 .4 .1 自然语言
文章列表

6 .3 算法设计要求

《程序设计基础》(基于C语言讲解) 石光华 编著 —北京: 清华大学出版社

什么样的算法是好的算法呢? 在设计算法时需要向哪些方面努力呢? 一般应包括以

下几个方面。

第6章 算法和算法的表达方式 81

1 .正确性

一个算法应当能够解决具体问题。其“正确性”(correctness)可分为以下方面。

(1) 不含逻辑错误。

(2) 对于几组输入数据能够得出满足要求的结果。

(3) 对于精心选择的典型、苛刻的输入数据都能得到要求的结果。

(4) 对于一切合法的输入都能输出满足要求的结果。

2 .可读性

算法应该以能够被人理解的形式表示,即具备可读性(readability)。太复杂的、不能被程序员所理解的算法难以在程序设计中采用。

3 .健壮性

健壮性(robustness)指算法具有抵御“恶劣”输入信息的能力。当输入数据非法时,算法也能适当地作出反应或进行处理,而不会产生莫名其妙的输出结果。例如,当输入3个边的长度值计算三角形的面积时,一个有效的算法应该在3 个输入数据不能构成一个三角形时报告输入的错误,应能够返回一个表示错误或错误性质的值并中止程序的执行。

4 .效率与低存储量的需求

高效率和低存储量是优秀程序员追求的目标。效率指的是算法执行时间,对于一个问题如果有多个算法可以解决,则执行时间短的算法效率高。存储量的需求指算法执行过程中所需要的最大存储空间。高效率与低存储量的需求均与问题的规模有关。占用存储量最小、运算时间最少的算法就是最好的算法。但是在实际中,运行时间和存储空间往往是互相矛盾的,要根据具体情况选择更优先考虑哪一个因素。