zoukankan      html  css  js  c++  java
  • 时间复杂度和空间复杂度分析

    时间复杂度

    时间复杂度误区:

      1.时间复杂度不是运行的时间,而是算法语句的执行次数。

      2.算法不仅仅指有名字的算法,一个判断和一个循环语句都算作算法的。

    时间复杂度:算法语句被执行的次数。

    一个算法语句的执行次数最终都是可以通过函数f(n)来表示的,如本代码,这里的x++就是算法语句,其f(n)=10-x

        int x = 1;
        while(x < 10){
            x ++;
        }

    两层n次的循环    f(n) =  n^2

    i=1;
    WHILE i<n DO
    i=i*2

    i每循环一次就乘了2,知道当i>=n时循环结束,循环m次有2^m>=n,得到m=log2n。

    空间复杂度

    空间复杂度就是一个算法在运行过程中临时占用的存储空间大小,换句话说就是被创建次数最多的变量,它被创建了多少次,那么这个算法的空间复杂度就是多少。

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

    前者空间复杂度就是O(n),而后者空间复杂度就是O(1)常数阶。很好理解,前者每循环一次都会重新创建一个temp对象,而后者只在循环外面创建了一个temp对象,每次循环只是给他不同的引用而已。所以有个规律,如果算法语句中就有创建对象,那么这个算法的时间复杂度和空间复杂度一般一致,很好理解,算法语句被执行了多少次就创建了多少对象。

  • 相关阅读:
    51Nod 1085 背包问题 (01背包)
    Hdu2602 Bone Collector (01背包)
    Hdu1241 Oil Deposits (DFS)
    问题 1462: [蓝桥杯][基础练习VIP]Huffuman树
    结果填空:最强团队
    算法提高 排列数 (全排列)
    和 (DFS)
    洛谷P1605 迷宫 (DFS)
    Poj1979 Red and Black (DFS)
    Poj2386 Lake Counting (DFS)
  • 原文地址:https://www.cnblogs.com/DuWA/p/11414565.html
Copyright © 2011-2022 走看看