zoukankan      html  css  js  c++  java
  • 时间复杂度

    分析方法:

    • 只要关注最大阶级的量级即可。
    • 加法法则:总复杂度等于量级最大的那段代码的复杂度
    • 乘法法则:嵌套代码复杂度等于嵌套内外代码复杂度的乘积

    不同复杂度大小比较:

    在这里插入图片描述
    常见复杂度分析:

    1.O(1):
    表示复杂为度常量级,并不是执行一行代码。
    比如

    int j = 8;
    int j = 6;
    int sum = i + j;
    

    也是O(1)

    2.O(logn),O(nlogn)

    i = 1;
    while (i <= n)
    {
      i=i*2;
    }
    

    这个算法就是2^k=n所以可以得出,所以时间复杂度为。
    如果代码修改为

    i = 1;
    while (i <= n)
    {
      i=i*3;
    }
    

    则为3^k=n得出k=log3n,复杂度为O(log3n).
    因为对数之间可以用换底公式相互转化,即即他们之间只有一个常量级,所以他们复杂度都记为O(logn)。

    常见O(logn)算法有二分查找

    而O(nlogn)就是logn循环执行n遍的结果。

    快速排序复杂度最大时间复杂度为O(nlogn)

    3.O(m+n)
    这种情况下是两个加法块代码但无法判断m和n谁大时使用
    在这里插入图片描述

  • 相关阅读:
    高维协方差矩阵估计
    互信息
    投资组合模型
    R语言
    sklearn
    Python学习
    swagger使用过程中遇到的坑
    mysql杂文
    2018狗年,半年报
    Springboot 手动搭建项目 --redis配置&日志完善+用户名
  • 原文地址:https://www.cnblogs.com/yonglin1998/p/11780862.html
Copyright © 2011-2022 走看看