算法——时间复杂度和空间复杂度
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。
一、时间复杂度
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。
相关文章推荐
- 算法的时间复杂度
- 第16话:算法的空间复杂度
- 第14话:如何计算算法的时间复杂度
- 基于比较的排序,时间复杂度下界是o(nlogn)的证明
- 算法的时间复杂度分析
- 求递归方式的时间复杂度【转】
- 线性表顺序存储的优缺点
- 数据结构中排序算法的总结
- 递归算法的时间复杂度终结篇
- 时间复杂度的计算
- 分治法
- 算法基础(1)
- 时间复杂度和空间复杂度详解
- 题目1:找出1000以下自然数中3和5的倍数之和。
- 题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和。
- 大话数据结构学习之(一) 时间空间复杂度
- 快速排序时间复杂度分析
- 单链表中实现O(1)时间复杂度删除节点
- 学会“大O分析法”再谈算法吧
- 简单时间复杂度大O记法