python递归算法的时间复杂度分析_时间复杂度分析?

1.什么是时间复杂度?

时间复杂度也就是我们在数据结构和算法中,对于数据结构操作方法所耗费的时间和数据规模增大的变化趋势。我们根据这个变化趋势就可以不通过测试数据也能大概得到这个算法的执行效率,从而进行一个粗略的评估。

2.为什么要学时间复杂度?

e8e3dc7fdd953db7561f6e5a091c217a.png

8881966b834fc5bbc096607e4bde8879.png

5129070ccc41c381864eca75033006f8.png

ced4c6062aa2dcb9be59c3528c69aab2.png

21a775b90ce91c691ea454fe848f076b.png

2cb10ef3a587574da6af48221385f869.png

我们在进行算法编码时如果没有进行时间复杂度的分析,往往只能通过事后分析法来用测试算法的效率,但是这个效率会受到一些外界因素的影响如程序运行的环境和进行测试数据规模的大小,都会影响到算法的执行效率,所以为了在编码前就能大概评估出一个算法的执行效率,更加有利于写出高效的执行代码。

3.时间复杂度都有哪些?

6ab2ccc95b2780616088c88f07da9c9b.png

4.思维导图(第一次画,笔记不知道为什么导图不能展示出来?)

a69a385cd1699566f03b9a9572bd5b2b.png

5.推导一个稍微难一点的 logn

 i=1;

 while (i <= n) {

  i = i * 3;

 }

我们假设执行k次跳出循环,那么就有3^k=n

根据高中所学对数知识就得到log3^3^k=log3^n  最后得到k=log3^n,如果把3换成其他同理可以推导出k=logc^n  

根据换底公式log3^n=log2^n/log2^3=log2^n*1/log2^3=log2^n*log3^2=C*log2^n

所以O(log3^n)=O(C*log2^n)即 O(Cf(n)) = O(f(n)),常数C可以省略,所以log3^n=log2^n

所以我们直接忽略掉底数,统一表示为 O(logn)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值