《数据结构与算法》时间复杂度和空间复杂度

时间复杂度可以称之为一个函数,即数学里面带有未知数的函数表达式,它是衡量一个算法执行速度的快慢。用O()表示,括号里面的即为频度,就是执行算法的次数,它与算法的执行时间成正比,简称为大O阶。

计算大O阶的方法可以大概总结为三类:

第一,用常数1代替所有的加法常数。比如一个算法本来的次数是10,9+5等等,统一写为O(1)。

第二,在算得最后的答案只保留最高阶。比如本来为2N^2+N^2+10,后来结果写为O(N^2),常数也直接省略不写,因为是成比例的,可以去掉。

第三,如果最高阶存在且不是1,则去除这个项目相乘的常数,即系数。

当然,O(1)并不是说此算法只执行了一次,是指常数次。不是所有的时间复杂度都是看代码写出来的,有些还要看它的运行过程。像二分法,它的时间复杂度就是O(log2^N),这为对数阶,这个答案光看代码是看不出来的,要把它的运行过程写出来,在进行观察。斐波那契递归数列的时间复杂度计算方法也是如此,即为O(N^2)。当计算字符串的时间复杂度时,由于输入不同,时间复杂度不同。并且,字符串的时间复杂度分为三种情况:最好(第一个首字母,这样第一次就能找到)情况,执行1次。平均(除开第一和最后一个)情况,执行N/2次(可以理解为最好和最坏的平均值)。以及最坏(最后一个字母)情况,执行N次。所以通常都是拿最坏情况代替最终时间复杂度,即为O(N)。

空间复杂度就是为了计算变量的个数,它也用O()表示。我们平常对时间复杂度需掌握甚多,但对空间复杂度则需了解即可。它的大O()阶计算方法与时间复杂度类似,斐波那契递归数列的空间复杂度为O(N)。空间可以重复利用,不累计,但是时间不可重复使用,要进行累计。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值