zoukankan      html  css  js  c++  java
  • 第四课、程序灵魂的审判

    一、程序的性价比(效率)的审判方法

    1、事后统计法:比较不同算法对同一组输入数据的运行处理时间

    缺陷

    (1)、为了获得不同算法的运行时间必须编写相应的代码

    (2)、运行时间严重依赖硬件以及运行时的环境因素(因此不太准确)

    (3)、算法的测试数据选取相当困难

    2、事前分析估算:依据统计的方法对算法效率进行估算

    影响算法的主要原因

    (1)、算法采用的策略和方法(最重要)

    (2)、问题的输入规模(也很重要)

    (3)、编译器所产生的代码(如C++比JAVA高)

    (4)、计算机执行速度

    二、算法效率的度量举例

    1、算法效率的简单估算一

    2、算法效率的简单估算二

    3、算法效率的简单估算三

    int func(int a[], int len)       // ==> (n*n + 2)
    {
        int ret = 0;      // 1
        
        for(int i=0; i<len; i++)     
        {
            for(int j=0; j<len; j++) 
            {
                ret += a[i] * a[j];  // n * n
            }
        }
        
        return ret;      // 1
    }

    三、启示

    (1)、程序效率联系中的关键部分的操作数量为n*n

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

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

    算法操作数量的对比一

    结论:

    算法操作数量的对比二

    结论:

    算法操作数量的对比三

    结论:

    四、小结

    (1)、算法的度量有事后统计法和事前分析估算法

    (2)、事后统计法不容易准确度量算法的执行效率

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

    (4)、判断一个算法效率时只需要关注最高阶项就可以得出结论

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

  • 相关阅读:
    金蝶问题:不能保存已审核的单据
    在代码中设置cxTreeList按多列排序
    日积月累篇:生产任务单
    sp_reset_connection
    日积月累篇:仓库流程
    使用FreeMarker生成Word文档 仅此而已
    ASP格式化时间日期(二)
    省市区三级联动连接数据库
    利用SQL语句进行添加、删除、修改字段,表与字段的基本操作,数据库备份等
    ASP截取字数(二)
  • 原文地址:https://www.cnblogs.com/gui-lin/p/6798229.html
Copyright © 2011-2022 走看看