C语言基础 时间复杂度和空间复杂度

-----------加粗样式----start reading---------------

时间复杂度

定义
时间复杂度:执行一个算法,代码运行的次数和问题规模之间的函数关系, O(f(n)),又叫大O阶
时间复杂度只是计算一个大致的时间,所以只算最高次去除系数的时间复杂度如O(n),O(n2),O(n3)
O(1):常数项,和问题规模无关

举例

int main()
{
	int i;
	int n=10;
	int temp=0;

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

	return 0;
}

运行次数:1,2,3……10(一到十的和,运行十次)
运行了n次

for(i=1;i<**加粗样式**=n;++i)                                                    (1)
    {
      for(j=1;j<=n;++j)                                              (2)
          {**加粗样式**
              c[i][j]=0                                              (3)
              for(k=1;k<=n;k++)                                      (4)
                  {
                  c[i][j]+=a[i][k]*b[k][j]                           (5)
                  }
          }
    }

(1)运行n次
(2)运行nn次
(3)运行n
n次
(4)运行nnn次
(5)运行nnn次
一共运行n+2n2+2n3
空间复杂度计算最高次项,去除系数,所以上一段代码块时间复杂度为O(n3

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

n的值 1 2 4 8 16 ……n
运行次数 1 2 3 4 5……?
运行x次到n
2x=n
x=log 2 (n)
时间复杂度为O(log 2(n))

经过三个例题,相信大家应该知道如何计算时间复杂度了吧,最笨但是最准确的办法就是自己跑程序,数运行次数,当然,是有效的数,找规律的数

空间复杂度

定义
空间复杂度:执行一个算法,需要额外的辅助空间和问题规模之间的函数关系,用O(f(n))表示

再内存区域里分为
全局变量区
栈区
静态变量区

代码段
运行不同的代码就需要占用不同地方的内存,也就是相应的空间,就涉及到空间复杂度。

具体实践我会在下一篇“递归”中给大家介绍~~

---------------END---------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值