时间/空间复杂度

算法的时间复杂度

时间复杂度:计算代码的大概执行次数。而不是表面理解的计算时间。

空间复杂度:计算代码大概定义的变量的个数。考虑临时占用内存空间的量度。

如今计算机的存储空间足够大,有些算法可以牺牲空间以换取时间效率。也就是通常所说的:“用空间换时间”的做法。只有在嵌入式开发的领域,比较在意存储的空间大小。

采用的方法:O(n) O(大写)的渐进表示法。

主要介绍时间复杂度

1.常数阶示例
//代码执行次数
int a ,b; //执行第一次
int  sun ; // 执行第二次
sum=a+b; // 执行第三次
cout<<"sum = "<< sun <<endl; //执行第四次

以上代码一共执行了4次,F(n)=4, 就是累计执行次数是常数项次,故时间复杂度是O(1),而不是 O(3). 对计算机而言,不管是10次,100次,1000次都是常数项,常数项统统是O(1)。

2.线性阶
int i,sum;
int sum=0;
for(i=0;i<n;i++)
{
	sum +=i;  // n次
}
return sum;

F(n)=n+2; 则时间复杂度为:O(n)
思考??在fot 循环中,N的取值一般是一个确定的值,若N取一个很大的存在的数,那该复杂度还是这样的吗?

3.对数阶示例
int number=1;
int count=0;
while(number<n)
{
	number *=2;
	++count;
}
return count;

2的x次方是N,经过x次,number的大小大于等于N,x=log 以2为底的对数。时间复杂度O(logn)。

4.平方阶示例
int i,a;
for(i=0;i<n;i++{           // n次循环
	for(a=0;a<n;a++)
	{       // n次循环
	}
}	

i从0—n 递加n次,且每次递加中 a也递增n次。故F(n)=N^2 。
时间复杂度为O(N^2)

平方阶的延伸示例
int a,b;
int m,n;
for(a=0;a<m;a++)
{      // m次循环
	for(b=0;b<n;b++)
	{    //n次循环
	}
}

上述例子的时间复杂度为:O(m*n).

nlogn 阶 O(nlogn)
立方阶 O(n^3)
指数阶 O(2^n)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值