2021-10-16

时间复杂度和空间复杂度是评估算法效率的重要指标。时间复杂度关注的是算法执行次数,通常用O表示法描述,忽略低阶和常数项。空间复杂度则衡量算法运行过程中的内存使用情况,包括代码、输入输出和临时空间。好的算法倾向于优化时间复杂度,而空间复杂度则需保持在合理范围内。
摘要由CSDN通过智能技术生成

时间复杂度和空间复杂度的详细解释

1、时间复杂度

       时间复杂度不是单纯意义上的程序的运行时间,因为程序在不同配置的设备上的运行时间是不同的,而且即使程序在同一个设备上运行程序,由于系统环境的不同,导致程序的运行时间存在差异。

        因此,我们衡量的时间度复杂度是一个合理的估计值:程序所有语句的执行次数总和,即整段代码的频度。此处代码的频度值为估计值,即代码频度的最大值,例如,代码中的循环语句,我们假设循环全部执行;最后出现的频度最大值的表达式一般为关于n的多项式结构,我们可令n趋向于五项大,将多项式简化为一个因式,(此处涉及等价无穷小和高阶无穷小的知识,不在此处赘述)然后用O(因式)表示时间复杂度。

    某些实际场景中,还可能用最好情况下的频度和最坏情况下的频度的平均值来作为算法的时间复杂度。

2、空间复杂度

       空间复杂度 = 代码所占内存 + 数据输入输出所占内存 + 代码运行所申请的临时存储空间

       对算法的空间复杂度影响最大的,往往是程序运行过程中所申请的临时存储空间,如果程序所占用的存储空间和输入值无关,则该程序的空间复杂度就为 O(1);反之, 则需要进一步判断:

若随着输入值 n 的增大

  • 程序申请的临时空间成线性增长,则程序的空间复杂度 O(n) 表示;
  • 程序申请的临时空间成 n^{2} 关系增长,则程序的空间复杂度用 O(n^{2}) 表示;
  • 程序申请的临时空间成 n^{3} 关系增长,则程序的空间复杂度用 O(n^{3}) 表示;
  • 等。

多数场景,一个好的算法往往更注重时间复杂度,而空间复杂度只需在一个合理的范围内。

主要参考的文章如下:

时间复杂度和空间复杂度(详解版) (biancheng.net)http://data.biancheng.net/view/272.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清韵逐梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值