「数据结构_初阶」时间、空间复杂度

本文深入解析算法的时间复杂度和空间复杂度,通过实例演示如何计算时间复杂度,采用大O的渐进表示法,并对比时间复杂度与空间复杂度的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在了解时间复杂度和空间复杂度之前要先搞清楚算法效率,算法效率分为两种一个是时间效率也称时间复杂度,另一个是空间效率也称空间复杂度。
很显然,时间复杂度衡量一个算法用时多少即它的运行速度,空间复杂度衡量的是算法需要的空间,这两种复杂度都采用大O的渐进表示法来表示。随着计算机的发展,计算机的存储容量已经达到了很高的一个程度,现在基本上考虑的都是一个算法的时间复杂度,空间复杂度已经不再是一个需要特别关注的问题了。
我做的一个本节总结的思维导图↓
在这里插入图片描述
时间复杂度
计算时间复杂度主要是计算算法中基本操作的执行次数,采用大O的渐进表示法,以下面的这段代码为例子来计算它的时间复杂度

void Func1(int N)
{
	int count = 0;
	for(int i = 0 ; i<N ; ++i)
	{
	for(int j = 0; j<N ;++j )
	{
		++count;
	}
}
	for(int k = 0; k<2*N ;++k)
	{
		++count;
	}
	int M = 10;
	while(M--)
	{
		++count;
	}
	printf("%d",count);
}

1.先计算Func1的基本操作执行了多少次
F(N)=N^2+2*N+10

  • N=10 F(N)=130
  • N=100 F(N)=10210
  • N=1000 F(N)=1002010

2.使用大O的渐进表示法
大O的渐进表示法:big O notation,用于描述函数的渐进行为的数学符号
大O渐进表示法的规则为

  • 用常数1取代运行时间中所有的加法常数项
  • 再修改后的运行次数函数中只保留最高阶项
  • 最高阶项的常数如果不是1,则除去这个常数

按照规则最后得到结果Func1的时间复杂度为O(N^2)

空间复杂度
空间复杂度主要记住是计算变量的个数而不是程序占用了多少空间的大小,就不举实例说明了。

二者区别

  • 时间复杂度是累积计算
  • 空间复杂度是复用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值