算法的空间复杂度

3 篇文章 0 订阅
1 篇文章 0 订阅

空间复杂度:

算法的存储变量包括:

1、程序本身所占的空间;

2、输入数据所占空间;

3、辅助变量所占空间;

输入数据所占空间只取决于问题本身,和算法无关,则只需要分析除了输入和程序之外的辅助变量所占的额外空间

空间复杂度是对一个算法在运行过程中临时占用的存储空间大小的量度,一般也做为问题规模n的函数,以数量级形式给出,记作:

S(n)=O(g(n))

空间复杂度分析1:

int fun(int n){

  int i,j,k,s;

  s=0;

  for(i=0;i<n;i++)

     for(j=0;j<i;j++)

      for(k=0;k<j;k++)

        s++;

return s;

}

由于算法中临时变量的个数与问题规模n无关,所以空间复杂度均为S(n)=O(1);

 

空间复杂度分析2

void fun(int a,in n){

 

if(n==0){

System.out.println(a);

}else{

 

fun(a,n-1)

}

此属于递归算法,每次调用本身都需要分配新的空间,其空间复杂度为O(n).

注意:

1、空间复杂度相比时间复杂度分析要少,

2、递归情况:递归使代码简洁,算法本身所占用的存储空间较少,缺点:效率低下,运行时需要占用较多的临时工作单元

  若写成非递归情况,代码一般本身可能比较长,算法本身占用的存储空间较多,但运行将需要较少的存储单元。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值