当两个算法都能满足我们的需要时,我们在工程中更关心什么呢?
性价比(效率)是工程中最关注的算法附加特性。
怎么比较两个算法的效率呢?
1、事后统计法
比较不同算法对同一组输入数据的运行处理时间
缺陷:
为了获得不同算法的运行时间必须编写相应的程序
运行时间严重依赖硬件以及运行时的环境因素
算法测试数据的选取相当困难
2、事前分析估算
依据统计的方法对算法效率进行估算
影响算法效率的主要因素
1、算法采用的策略和方法
2、问题的输入规模
3、编译器所产生的代码
4、计算机执行速度
算法效率的简单估算1:
这里的n就是问题的规模。算法的总步骤为2n+4次。
算法效率的简单估算2:
算法的总步骤为n+2。
算法效率的简单估算3:
启示:
三种求和算法中关键部分的操作数量分别为2n、n、1。
随着问题规模n的增大,它们操作数量的差异会越来越大,因此,实际算法在效率上的差异也会变得非常明显。
问题规模与操作数量:
算法操作数量的对比:
A~和B~分别是A和B的变种表达式。
下面再看一个算法操作数量的对比:
再次考察一个算法操作数量对比:
结论:
算法的度量有事后统计法和事前分析法
事后统计法不容易准确度量算法的效率
事前分析估算法通过操作数量度量算法效率
判断一个算法效率时只需要关注最高阶项就能得出结论
某个算法,随着问题规模n的增大,它会越来越优于另一算法,或者越来越差于另一算法。