您的位置:首页 > 其它

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

2016-05-09 00:00 1501 查看
摘要: 时间复杂度和空间复杂度

一、时间复杂度
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息