时间和空间复杂度的计算方法

时间复杂度与空间复杂度都是针对算法而言的,我们知道数据+算法=程序,那么一个程序在运行过程中,必然要占用计算机的内存资源,而计算结果也需要时间;

那么我们可以这样理解:

时间复杂度 = 程序运行的时间;

空间复杂度 = 程序占用的内存;

但是对于运行时占用的时间,根据运行环境的不同,其结果也是不同的,所以在数学上,使用一个公式来表示:大O符号表示法 即 T(n) = O(f(n))

时间复杂度:

    对于没有循环结构的普通算法:T(n) = O(1)

    对于有循环结构的算法:T(n) = O(n)

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

      对于有循环嵌套结构的算法:T(n) = O(n^2)

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

以此类推:T(n) = O(n^3),T(n) = O(n^4) .......T(n) = O(n^n)

  对于循环中有乘法的算法:T(n) = O(logn)

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

组合一下:T(n) = O(nlogn)

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

其他以此类推;

空间复杂度:S(n) = O(f(n))

  空间复杂度主要针对的是变量:

      int i = 1;S(n) = O(1)

     int[] a = new int[n]; S(n) = O(n)

     int[] a = new int[n][n]; S(n) = O(n^2)

其他以此类推;

 

 

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值