第四课 程序灵魂的审判

  当两个算法都能满足我们的需要时,我们在工程中更关心什么呢?

性价比(效率)是工程中最关注的算法附加特性。

  怎么比较两个算法的效率呢?

1、事后统计法

  比较不同算法对同一组输入数据的运行处理时间

  缺陷:

    为了获得不同算法的运行时间必须编写相应的程序

    运行时间严重依赖硬件以及运行时的环境因素

    算法测试数据的选取相当困难

2、事前分析估算

  依据统计的方法对算法效率进行估算

  影响算法效率的主要因素

    1、算法采用的策略和方法

    2、问题的输入规模

    3、编译器所产生的代码

    4、计算机执行速度

 算法效率的简单估算1:

这里的n就是问题的规模。算法的总步骤为2n+4次。

算法效率的简单估算2:

算法的总步骤为n+2。

算法效率的简单估算3:

启示:

  三种求和算法中关键部分的操作数量分别为2n、n、1。

  随着问题规模n的增大,它们操作数量的差异会越来越大,因此,实际算法在效率上的差异也会变得非常明显。

 问题规模与操作数量:

算法操作数量的对比:

A~和B~分别是A和B的变种表达式。

下面再看一个算法操作数量的对比:

再次考察一个算法操作数量对比:

结论:

  算法的度量有事后统计法和事前分析法

  事后统计法不容易准确度量算法的效率

  事前分析估算法通过操作数量度量算法效率

  判断一个算法效率时只需要关注最高阶项就能得出结论

某个算法,随着问题规模n的增大,它会越来越优于另一算法,或者越来越差于另一算法。

原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9489766.html