• 时间复杂度


    分析方法:

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

    不同复杂度大小比较:

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

    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谁大时使用
    在这里插入图片描述

  • 相关阅读:
    如何理解联合文件系统?
    Docker 学习笔记(一)
    Bzoj 3124: [Sdoi2013]直径 题解
    Bzoj 3131 [Sdoi2013]淘金 题解
    欧拉路(题目)
    硬币问题
    线段树、树状数组
    Splay树、Treap树
    模拟退火
    广搜题目(一本通)
  • 原文地址:https://www.cnblogs.com/yonglin1998/p/11780862.html
Copyright © 2020-2023  润新知