数据结构和算法学习笔记-3
2015-07-29 22:24
686 查看
时间复杂度和空间复杂度:
一、时间复杂度
T(n) = O(f(n))
随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称之为算法的渐进时间复杂度,即时间复杂度,其中f(n)是问题n的函数
随着问题规模n的增大,T(n)增长最慢的算法为最优算法
时间复杂度T(n)的求法公式
1、用常数1取代运行中的所有加法常数
2、修改后,只保留最高阶项
3、如果最高阶项存在且不是1,则去除与这个项相乘的常数
常见的时间复杂度:
时间复杂度增长曲线
时间复杂度比较
时间复杂度的两种情况:
平均时间:算法运行的平均运行时间
最坏运行时间:算法运行的最坏时间,在应用中最重要的要求,我们所提及的就是这种运行时间
二、空间复杂度
一个算法在运行过程中临时占用存储空间大小的量度,记做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,则去除与这个项相乘的常数
常见的时间复杂度:
时间复杂度增长曲线
时间复杂度比较
时间复杂度的两种情况:
平均时间:算法运行的平均运行时间
最坏运行时间:算法运行的最坏时间,在应用中最重要的要求,我们所提及的就是这种运行时间
二、空间复杂度
一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1)。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。
某种意义上可以用空间换时间
比如判断某年是否为闰年,可以使用算法判断。也可以事先定义1个数组,数组下标为年份,为闰年的值为1,反之为0。
相关文章推荐
- 数据结构之---C语言实现图的十字链表存储表示
- Remove Duplicates from Sorted List II 解答(有个比较特殊的case leetcode OJ没有覆盖)
- 数据结构---数的操作
- 数据结构之---C++语言实现图的十字链表存储表示
- 数据结构录 之 主席树。
- 字典树 一种快速插入查询数据结构
- 例3.1 猜猜数据结构 UVa11995
- Hbase系统架构及数据结构
- 数据结构---位运算
- 有关java 数据结构
- 数据结构一:企业级顺序存储底层库封装
- 【算法与数据结构】二叉查找树算法实现
- [数据结构]二叉树之二叉链表的类模板实现
- opencv中keypoint数据结构分析
- 使用twig来组装数据使数据结构可视化
- Java数据结构-树的应用-二叉查找树
- 表、栈和队列
- 数据结构(三):非线性逻辑结构-树
- 图数据结构(期限、存储结构、遍历)
- 扩展数据结构--跳表(SkipList)