zoukankan      html  css  js  c++  java
  • 审判程序的灵魂

    算法效率的度量:

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

    缺陷:

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

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

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

    事后统计法虽然直观,但是实施困难且缺陷多,一般不予考虑。

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

    影响算法效率的主要因素:

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

    2、问题的输入规模

    3、编译器所产生的代码

    4、计算机执行速度


     

     

     

    从以上三种来看,t3<t2<t1。


     

    算法效率的度量:大O表示法,简化了算法效率的比较,

    1、算法效率严重依赖于操作(Operation)数量。

    2、在判断时首先关注操作数量的最高次项。

    3、操作数量的估算可以作为时间复杂度的估算。

    O(5) = O(1)

    O(2n + 1) = O(2n) = O(n)

    O(n^2 + n + 1) = O(n^2)

    O(3n^3+1) = O(3n^3) = O(n^3)


     

    在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度。

    算法空间的复杂度:

    算法的空间复杂度通过计算算法的存储空间实现,

                                    S(n) = O(f(n)),

    其中,n为问题规模,f(n)为在问题规模为n时所占用存储空间的函数。

    大O表示法同样适用于算法的空间复杂度,当算法执行时所需要的空间是常数时,空间复杂度为O(1)。

    空间与时间的策略:

    1、多数情况下,算法执行时所用的时间更令人关注

    2、如果有必要,可以通过增加空间复杂度来降低时间复杂度

    3、同理,也可以通过增加时间复杂度来降低空间复杂度

    在实现算法时,需要分析具体问题对执行时间和空间的要求。

  • 相关阅读:
    1015. 德才论
    1014. 福尔摩斯的约会
    1013. 数素数
    1012. 数字分类
    1011. A+B和C
    1010. 一元多项式求导
    1009. 说反话
    1008. 数组元素循环右移问题
    1007. 素数对猜想
    1006. 换个格式输出整数
  • 原文地址:https://www.cnblogs.com/sanshijvshi/p/10741393.html
Copyright © 2011-2022 走看看