算法效率

  1. 算法效率包括时间上的效率(时间复杂度)和空间上的效率(空间复杂度)两个部分

时间复杂度:用来衡量一个算法的运行速度,即,算法中的基本操作的执行次数。
空间复杂度:算法在运行过程中临时占用存储空间大小的衡量,算的是变量的个数。
注:在实际中一般情况关注的是算法的最坏运行情况。

  1. 下面举两个最典型的例子作为说明:
#include <stdio.h>
 long long Factorial (size_t k)
 {
  return k<2 ? 1 : Factorial(k-1)*k;
 }
int main ( )
{
  printf ("%d\n",Factorrial(6));
  return 0;
}
在递归调用求k的阶乘时,由于总共递归调用了k次,开辟了k个栈帧,而且每个栈帧使用了常数个间,所
以时间复杂度为O(N),空间复杂度为O(N)。
#include <stdio.h>
long long Fibonacci (size_t k)
{
 return k<2 ? k : Fibonacci (k-1) + Fibonacci (k-2);
}
int main ( )
{
 printf ("%d ",Fibonacci(10));
 return 0;
}
在求斐波那契函数时,可以把每次对fibonacci(k)的调用整体上看做是一个二叉树,由于二叉树的结点最多
有(2^n - 1)个,即遍历完所有的结点的个数为(2^n - 1)。
所以,时间复杂度为O(2^n),空间复杂度为O(N)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值