时间复杂度详解

参考资料:

参考视频


视频内容整理:

假设有如下两段代码块

    //执行次数 :2
    public void test_01(){
        int num = 1;
        System.out.println("num :"+ num);
    }
    //执行3n+2次
    public void test_02(int n){
        for(int i = 0; i< n; i++){
            System.out.println("num :"+ i);
        }
    }

 上述两个代码块,如果被调用,分别会执行2次和3n+2次

第一个代码块被调用,两行代码分别被执行一次

第二个代码块被调用,示意图如下:

 所以为3n+2次

如果用T(n)表示执行次数  那么

T(n) = 2;

T(n) = 3n+2

  • 算法一般会用T(n)的简化估算值,来衡量代码执行的速度,简化的估算值叫时间复杂度,规则如下:
  • 其中 m,n为变量(m为正整数),k1,k2,k3,k4,k5为常数
T(n)  = k1当表达式为常数时,那么时间复杂度为1.记为O(1)
T(n) = k1*n^k2+k3*n^(k2-m)+k4当表达式为变量时,取变量的最高次幂,去系数,那么时间复杂度为n^k2,记为O(n^k2)。如T(n) = 5*n^4-9*n^3+32时间复杂度为n^4,记为O(n^4)
T(n) = k1*n^k2-k3*n^(k2-m)+k4
  • 时间复杂度的优劣顺序
  •  
    名称时间复杂度
    常数时间O(1)
    对数时间O(log n)
    线性时间O(n)
    线性对数时间O(n log n)
    二次时间O(n²)
    三次时间O(n³)
    指数时间O(2^n)

     

  • 下面是一些常见的时间复杂度练习:

 

 所以以此类推,有多少重循环,时间复杂度就是n的几次方

 

 

 

 

 

 

 

 

 

 


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PH = 7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值