zoukankan      html  css  js  c++  java
  • 2021/9/12 算法的时间复杂度与空间复杂度

    2021/9/12 算法的时间复杂度与空间复杂度

    一般可以从一个算法的时间复杂度与空间复杂度来评价算法的优劣。

    时间复杂度:时间增长的趋势

    ​ 通俗来讲就是计算机运行一个算法时,程序代码被执行的总次数

    空间复杂度:内存空间增长的趋势

    T(n) 表示时间。

    常见的渐进时间复杂度有:

    style="zoom:25%;"

    时间复杂度计算

    1 O(1)

    复杂度为常数,不会随着变量的改变而改变

    int x = 0;
    int y = 1;
    int temp = x;
    x = y;
    y = temp;
    

    2 O(n)

    for(int i =0;i<n;i++){
      xxx
    }
    

    3 O(logN)

    int i = 1;
    while (i<n){
      i = i * 2;
    }
    // 2^k = n
    // k = logN
    

    4 O(n logN)

    for(int j =0;j<n;j++){
      int i = 1;
      while (i<n){
        i = i * 2;
      }
    }
    // 在n层循环中套了一层logN
    

    5O(n^2) n平方

    for (int i=1;i<n;i++){
      for (int j = 1;j<n;j++{
        xxx;
      }
           }
    

    6 O(nm)

    for (int i=1;i<n;i++){
      for (int j = 1;j<m;j++{
        xxx;
      }
           }
    

    空间复杂度计算

    用S(n) 表式

    S(n) = O(f(n))

    1 O(1)

    int x = 0;
    int y = 0;
    x++;
    y++;
    // x,y无论怎么赋值,在内存分配上总是4个字节
    

    2 O(n)

    int []array = new int[n];
    for (int i=0;i<n;i++){
      array[i] = i;
    }
    // 取决于array的长度,即n的大小
    

    3 O(n^2)

    二维数组,矩阵相加。

  • 相关阅读:
    Sql Sugar
    GoLang 环境部署
    Typora 自动添加序号
    C# 操作 Oracle批量执行Insert Blob
    C# 生成读取二维码
    Asp.net core 使用Serilog记录日志
    Asp.net Core 将日志输出到文件
    云原生领域的一些技术展望
    C# BeginInvoke用法记录
    C# 委托及线程
  • 原文地址:https://www.cnblogs.com/hujesse4/p/15259405.html
Copyright © 2011-2022 走看看