数据结构---时间复杂度

T(n) = O(f(n))

T(n): 它表示代码执行的时间;
n 表示数据规模的大小;
 f(n) 表示每行代码执行的次数总和。
因为这是一个公式,所以用f(n)来表示。
公式中的O ,表示代码的执行时间T(n) 与f(n)表达式成正比。

大O时间复杂度 实际上并不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势,所以,也叫作渐进时间复杂度 , 简称时间复杂度

当n很大时,你可以把它想象成10000、100000。 而公式中的低阶、常量、系数三部分并不左右增长趋势,所以都可以忽略。我们只需要记录一个最大量级就可以了。

时间复杂度分析

1. 只关注循环执行次数最多的一段代码

在分析一个算法、一段代码的时间复杂度的时候,也只关注循环执行次数最多的那一段代码就可以了。这段核心代码执行次数的n的量级,就是整段要分析代码的时间复杂度。

int cal(int n ){
    int sum = 0;
    int i = 1;
    for(;i <= n; ++i){
        sum = sum + i;
    }
    return sum;
}

其中第2、3行代码都是常量级的执行时间,与n的大小无关,所以对于复杂度并没有影响。循环执行次数最多的是第4、5行代码,所以这块代码要重点分析。这两行代码被执行了n次,所以总的时间复杂度就是O(n)。

2.加法法则:总复杂度等于量级最大的那段代码的复杂度


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是时间复杂度,算法中某个函数有n次基本操作重复执行,用T(n)表示,现在有某个辅助函数f(n),使得当n趋近于...
    yinxmm阅读 10,667评论 0 2
  • 1、算法效率的度量方法 “刚才我们提到设计算法要提高效率。这里效率大都指算法的执行时间。那么我们如何度量一个算法的...
    Joker_King阅读 1,852评论 0 0
  • 最近突然萌生了一个想法,好好系统的学习一下算法与数据结构然后产生一系列的文章来回顾与总结学到的东西,这部分我想从最...
    一叶障目阅读 2,256评论 0 0
  • 一、时间复杂度1、定义一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助...
    Qi0907阅读 12,672评论 0 1
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,894评论 2 7