时间复杂度详解

参考资料:

参考视频


视频内容整理:

假设有如下两段代码块

    //执行次数 :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的几次方

时间复杂度详解

 

 

时间复杂度详解

时间复杂度详解

时间复杂度详解 

 

 

 

 

 

 

 


 

 

上一篇:归并排序(Merge Sort)思想,代码实现


下一篇:CCF201709-2 公共钥匙盒