算法时间复杂度和空间复杂度

时间复杂度一般看循环嵌套几层,每一层的循环次数和哪个变量有关

语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=0(f(n))。它表示随问题规模n的增大,算法执行时间的埔长率和 f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f( n)是问题规模n的某个函数。

空间复杂度就看你申请内存用了多少(数组长度),与哪个变量有关

空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1) 。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息

分析一个算法的时间复杂度步骤:

  • 用常数1取代运行时间中的所有加法常数。
  • 在修改后的运行次数函数中,只保留最高阶项。
  • 如果最高阶项存在且不是1,则去除与这个项相乘的常数。
  • 得到的最后结果就是大O阶。

空间复杂度计算

  •  忽略常数,用O(1)表示 
  • 递归算法的空间复杂度=递归深度N*每次递归所要的辅助空间 
  • 对于单线程来说,递归有运行时堆栈,求的是递归最深的那一次压栈所耗费的空间的个数,因为递归最深的那一次所耗费的空间足以容纳它所有递归过程。

 

posted @   纸包鱼  阅读(153)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示