美文网首页
算法复杂度

算法复杂度

作者: __method__ | 来源:发表于2020-11-05 15:43 被阅读0次

    算法复杂度

    算法复杂度的目的:分析代码执行的时间成本。
    我们从五个方面来介绍算法复杂度:
    时间复杂度、时间复杂度分类、时间复杂度计算规则、空间复杂度、实践

    时间复杂度

    什么是时间复杂度?
    做一件事情需要花费多少时间:花费时间举例:眨眼、口算1+1、找个女朋友
    通过上面的总结出来的表达式,我们知道,表达式中具体的数字10其实处于一个次要的关系,其实我们在总结规律的时候,其实就是将所有和主干无关的条件都抛开,就分析主干,在我们这里其实本质上是T和n的关系。


    如果将次要关系都慢慢的省略掉的话,就会逐渐演变成一个渐变的函数O(g(n)),我们一般把这种渐进的表示方法,
    称为:大O记法
    渐变函数(规律函数):其实就是所谓的“g(n)长大后我就成了你O(g(n))”
    他的重点是:规律趋势
    所以,我们可以将这个表达式,最终演变成一个T和n的表达式:
    假设存在算法A函数g(n)=nn10,总结规律时候,把无关紧要的条件10去除掉,就变成了一个渐进的算法A函数O
    (g(n)),所以最终的时间T(n)=O(g(n))
    我们一般称O(g(n))为算法A的渐近时间复杂度,简称时间复杂度,标记为T(n)

    时间复杂度分类

    分析算法时,存在几种可能的考虑:
    算法完成工作最少需要多少基本操作,即最优时间复杂度
    算法完成工作最多需要多少基本操作,即最坏时间复杂度
    算法完成工作平均需要多少基本操作,即平均时间复杂度

    最优时间复杂度:
    其价值不大,因为它没有提供什么有用信息,其反映的只是最乐观最理想的情况,没有参考价值。
    最坏时间复杂度:
    提供了一种保证,表明算法在此种程度的基本操作中一定能完成工作。
    平均时间复杂度:
    是对算法的一个全面评价,因此它完整全面的反映了这个算法的性质。但另一方面,这种衡量并没有保证,不是每个
    计算都能在这个基本操作内完成。而且,对于平均情况的计算,也会因为应用算法的实例分布可能并不均匀而难以计算。
    我们知道有一个“木桶原理”,所以我们把问题最坏的一个条件作为处理该问题的最低标准,所以我们平常所说的时
    间复杂度,其实说的是"最坏时间复杂度"。

    基本计算规则

    时间复杂度的6条基本计算规则
    1、基本操作,即只有常数项
    简单来说:没有数量规模,就执行一次
    时间复杂度:O(1)
    2、顺序结构,时间复杂度按加法进行计算
    简单来说:一步一步的执行下去



    时间复杂度:O(n)
    3、循环结构,时间复杂度按乘法进行计算
    简单循环:就是批量执行多次
    比如3层循环
    时间复杂度:O(n3)
    递归循环:重复同样的步骤的重复次数
    时间复杂度O(logn)
    4、分支结构,时间复杂度取最大值
    简单来说:就是多分支if语句,找一个时间最长的作为标准的时间
    5、判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
    6、在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度

    相关文章

      网友评论

          本文标题:算法复杂度

          本文链接:https://www.haomeiwen.com/subject/iuaovktx.html