算法——时间复杂度和空间复杂度
算法——时间复杂度和空间复杂度
翼动动空 发表于2年前
算法——时间复杂度和空间复杂度
  • 发表于 2年前
  • 阅读 1466
  • 收藏 1
  • 点赞 2
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 时间复杂度和空间复杂度

一、时间复杂度 
T(n) = O(f(n)) 
随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称之为算法的渐进时间复杂度,即时间复杂度,其中f(n)是问题n的函数 
随着问题规模n的增大,T(n)增长最慢的算法为最优算法

时间复杂度T(n)的求法公式 
1、用常数1取代运行中的所有加法常数 
2、修改后,只保留最高阶项 
3、如果最高阶项存在且不是1,则去除与这个项相乘的常数

常见的时间复杂度: 

时间复杂度增长曲线 

时间复杂度比较 

O(1)  < O(lgn)  <  O(n) <  O(nlgn)  < O(n2)< O(n3)<O(2n)  < O(n!) < O(nn)

 

时间复杂度的两种情况: 
平均时间:算法运行的平均运行时间 
最坏运行时间:算法运行的最坏时间,在应用中最重要的要求,我们所提及的就是这种运行时间

二、空间复杂度 
一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1)。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。

某种意义上可以用空间换时间 
比如判断某年是否为闰年,可以使用算法判断。也可以事先定义1个数组,数组下标为年份,为闰年的值为1,反之为0。


 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 15
博文 69
码字总数 36207
×
翼动动空
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: