zoukankan      html  css  js  c++  java
  • 常见算法的时间与空间复杂度

    常见算法的时间与空间复杂度

    ~~~总结一些概念便于随时查看

    1.什么是时间复杂度(渐进时间复杂度)?

      简单来说,时间复杂度即是一个算法运行花费的时间。

    2.如何求?

      问题规模为n的一个算法内基本语句执行次数记为T(n),此时另一个函数f(n),当n趋近于无穷大时T(n)/f(n)为一个不等于零的常数,则该算法的时间复杂度记为O(f(n));

      f(n)越小,时间复杂度越低,算法效率越高。

      

    1 for(i=1; i<=n; ++i)
    2 {
    3     for(j=1; j<=n; ++j)
    4     {
    5         c[i][j] = 0;//该步骤属于基本操作执行次数:n的平方次
    6         for(k=1; k<=n; ++k)
    7             c[i][j] += a[i][k] * b[k][j];//该步骤属于基本操作执行次数:n的三次方次
    8     }
    9 }

      此处引用百科代码,T(n)=n3+n2,令f(n)=n3,此时T(n)/f(n)满足条件,则该代码的时间复杂度为O(n3)。

    3.什么是空间复杂度(渐进空间复杂度)?

      空间复杂度描述算法运行过程中临时占用的存储空间。

      算法在计算机上的存储空间包括:

      1)算法本身代码的存储空间;

      2)算法的数据(输入输出的数据)的存储空间;

      3)算法在运行过程中临时占用的存储空间;

    4)如何求?

      一般简单算法的空间复杂度为O(1),一般的递归算法为O(n),具体的分析需要根据算法中分配存储空间代码所处的位置(此处仅考虑代码本身的存储空间)。

  • 相关阅读:
    jQuery length 和 size()区别
    HTML5中Web Sql学后总结
    HTML5中的history API的理解和使用
    js中同步与异步的理解
    字符编码理解
    excel之VBA总结
    android29之UI控件的抽屉式实现方法之一(DrawerLayout和NavigationView)
    Linux环境下django初入
    Springboot整合MybatisPlus(超详细)完整教程~
    自定义持久层框架设计实现思路
  • 原文地址:https://www.cnblogs.com/lfz1211/p/9647226.html
Copyright © 2011-2022 走看看