时间复杂度与空间复杂度的基本概念

时间复杂度:

时间复杂度是指计算函数执行的基本次数,这里所指的函数是指数学里面的函数。

计算时间复杂度的时候一般会采用取大舍小的方法,比如时间复杂度=N^2+10,我们就会舍去10

一个函数的算法我们也分好几种情况,而我们一般都是考虑最坏的情况。

最好情况:输入的次数是函数运行的最小运行时间。

最坏情况:输入的次数是函数的最大运行时间。

平均情况:输入的次数是函数运行次数期望的运行时间。

我们举一些简单的例子:

void Test1(int N)
{
	int i = 0;
	int j = 0;
	int k = 0;
	for (i = 0; i < N; ++i)
	{
		for (j = 0; j < N; ++j)
		{
			//……
		}
	}
	for (k = 0; k < 2 * N; ++k)
	{
		//……
	}
	int count = 10;
	while (count--)
	{
		//……
	}
}

	 
#include<stdio.h>
int main()
{
	Test1;
	return 0;
}
她的时间复杂度为:O(N^2)

void Test2(int N;int M)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < M; ++i)
	{
	}
	for (j = 0; j < N; ++j)
	{
	}
}

	 
#include<stdio.h>
int main()
{
	Test2;
	return 0;
}
它的时间复杂度是:O(M*N)

递归算法的时间复杂度为:递归总次数*每次递归的次数

空间复杂度:

空间复杂度的计算与空间复杂度类似,也是用O的渐进表示法。

要注意的是递归算法的空间复杂度,假如递归深度为N*每次递归的空间大小,如果每次递归的空间为常数,则空间复杂度为O(N)。

以斐波那数列学习时间复杂度与空间复杂度

他是以兔子生长数目为例子:

第一个月月初有一对刚诞生的兔子,第二个月之后(第三个月初)它们可以生育,每月每对可生育的兔子会诞生下一对新兔子,兔子永远不死去

这个函数的定义为:


它的时间复杂度是:O(2^N),它的空间复杂度是O(N).


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值