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

时间复杂度:算法的基本操作执行的次数和问题的规模n之间的函数关系
(省略规则:1.只保留最高项   2.不要系数)

空间复杂度:算法的额外辅助空间和问题规模之间的函数关系省略规则:

(1.只保留最高项   2.不要系数)

O(1):算法的执行次数和问题规模之间没有任何关系
O(n):算法的执行次数和问题规模之间有关系,并且一般步进表达式以++或者--来跑
O(n^2):算法的执行次数和问题规模之间有关系,一般出现在双层循环(j和i有关系,也是n^2)
O(logn):算法的执行次数和问题规模之间有关系,并且一般步进表达式以*2和/2来跑
//以空间换取时间

我们以时间复杂度和空间复杂度举一个例子来看,帮助我们理解

代码1:(这是一个计算学生年龄的题目,在递归函数里已经详细讲过这里就不再赘述)

C语言递归函数(一)_hi332516_1的博客-CSDN博客

分析时间复杂度:

       如果输入的人数为 n 个人,子函数中临时变量 i 是小于n 的并且步进为1 ,那么我们的代码就要执行 n 次,再看for 循环中有一个语句,他也是执行了n 次,所以时间复杂度为应为O(2n),但是我们知道时间复杂度只需保留最高项,并且省略系数,所以该代码的时间复杂度应该为O(n)

分析空间复杂度:

       在该程序中用到的临时变量是 tmp 和 i,所以空间复杂度为O(2),再根据空间复杂度也只需保留最高项,并且省略系数,所以该代码的空间复杂度应该为O(1)

#include<stdio.h>
int Age1(int n)
{
	int tmp = 10;
	for (int i = 1; i < n; i++)
	{
		tmp += 2;
	}
	return tmp;
}
int main()
{
	for (int i = 1; i <= 5; i++)
	{
		printf("%d\n", Age1(i));
	}
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值