【数据结构】时间及空间复杂度

文章探讨了时间复杂度和空间复杂度在评估算法效率中的作用,使用大O符号表示最坏情况下的时间复杂度。举例说明了二分查找的时间复杂度为O(log2N),而斐波那契数列的递归实现可能导致较高的空间复杂度,特别是当使用数组或递归时。递归算法的空间复杂度可能达到O(N),需要注意栈溢出问题。
摘要由CSDN通过智能技术生成

时间复杂度及空间复杂度为算法效率分析中的时间效率和空间效率,计算复杂度时,使用大O的渐进表示法

  • 考虑算法最坏情况下的时间复杂度
  • 常数1取代运行时间的加法常数
  • 修改后只保留最高次项
  • 去除最高阶项的系数

如:执行次数为 N*(N+1)/2,时间复杂度为O(N^2)
 

. 时间复杂度

下图中趋势越缓,其时间复杂度越小,代表的算法效率越高
在这里插入图片描述
二分查找的时间复杂度
最坏情况下查找次数为x,有 2^x=N,x=log2N,故时间复杂度为O(log2N),从图中可以看出 O(log2N) 的复杂度仅仅大于 O(1),二分查找算法的效率是很高的

斐波那契数列时间复杂度
在这里插入图片描述

.空间复杂度

斐波那契数列的空间复杂度

long long* fibarr = (long long*)malloc((n+1)*sizeof(long long));

为斐波那契数列申请了有N个数的数组,空间复杂度为O(N)

递归求阶乘的空间复杂度
消耗 n 个栈帧,空间复杂度为O(N),但递归算法效率并不高,栈空间并不大,n稍微一大,就会导致栈溢出

递归斐波那契的空间复杂度
执行递归时,程序会先从 Fib(N) 开始将最外侧的递归线走到底,调用n层空间,后续每次递归使用的空间与之前调用的空间是同一块,并不会调用新的空间,最多使用n层空间,空间复杂度为O(N)

在这里插入图片描述

  • 空间可以重复利用,而时间是可累计的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值