1.5 算法与算法描述
【算法的定义】
算法是规则的有限集合,是为解决特定问题而规定的一系列操作。也就是说算法是处理步骤的序列集合。
【算法的特性】 :
有限性、确定性、可行性和输入输出特性。
【算法设计的要求】
算法需要保证正确性、可读性、健壮性和高效率低存储量等问题。
算法的正确性是不言而喻的
正确可分为三个层次:
1、一般数据能得出要求结果;
2、精心选择的边界数据也能得到要求结果;
3、所有合法数据都能得到要求结果。一层比一层要求更高。
例:要求 n 个数的最大值问题,给出示意算法如下:
max=0;
for(i=1 ;i<=n;i++)
{
scanf("%f",&x); if(x>max) max=x;
}
求最大值的算法无语法错误;当输入的 n 个数全为正数时,结果正确,如果输的入 n 个数全为负数时,求 得的最大值为
0,显然这个结果不对,由这个简单的例子可以说明算法正确性的内涵。
上面例子是 n 个数中求最大值算法的核心语句。分析算法正确性是第几层次?
- 可读性就是便于理解和交流,有助于合作开发。
- 健壮性就是耐折腾,非法操作时也不至于瘫痪。
- 高效率和低存储即:执行效率高,存储容量少,但往往需要折中。
【算法描述的工具】
描述算法的工具可有多种,可用自然语言、框图或高级语言实现。自然语言简单但容易二意表达,框图易于表达处理流程而难于表达数据流程,高级语言准确但细节过多。
因此我们选择用接近于高级语言而不是高级语言的类语言来表达。其优势为具有一般的语言规则而舍弃语言细节,把注意力集中于算法处理步骤本身。用 if then结构大家都能理解,那就是如果满足条件则执行。