大O符号与时间复杂度
来源:互联网 发布:pca算法实例 编辑:程序博客网 时间:2024/05/18 03:49
大O符号
1. 定义
大O符号(Big O notation)是用于描述函数渐进行为的数学符号。
也可以这么说:
用一个大O,在其括号()中,用另一个函数来描述原来的函数的数量级的渐进上界
计算机科学中,用于分析算法复杂性非常有用
2. 使用
这个符号有两种形式上很接近但迥然不同的使用方法:无穷大渐近与无穷小渐近。然而这个区别只是在运用中的而不是原则上的——除了对函数自变量的一些不同的限定, “大O”的形式定义在两种情况下都是相同的
分析算法复杂度时,用的O都代表无穷大渐进,表示n趋近于无穷大的情况
2.1 无穷大渐进
举例如下:
假设,解决一个规模为n的问题所花费的时间(或者所需步骤)可以表示为:
T(n) = 4n2 - 2n + 2
当n越来越增大时,n2项将开始占主导地位,而其它各项可以被忽略(自然包括2)
例如:当n=500时,4n2 项是2n项的1000倍大,因此在大多数非精确场合下,省略2n项对表达式值得影响是可以忽略不计的
其实进一步看,与n2的指数相比其系数4(与指数增大相比系数是很小的)也是无关紧要的
这样,大O符号就记下剩余的部分,写作:
T(n)∈O(n2)
或者更常见的
T(n)=O(n2)
此时,我们就说该算法具有n2阶(平方阶)的时间复杂度
2.2 无穷小渐进
暂不描述
3. 常用函数阶
下表是在分析算法时常见的函数。这些函数都处于n趋近于无穷大的情况下,在这种情况下函数结果值增长的慢的在表上方。c是一个任意常数,重点是n
时间复杂度
时间复杂度的分析基本就是上边2.1,这里想说的是关于时间复杂的一些让我混淆的概念
最坏时间复杂度
一般来说,我们希望获得一个算法的时间效率下限。这就是所谓最坏时间复杂度,它是一个保证
平均时间复杂度
不过通常来说,我们碰到的问题情况应该是既不是最坏的也不是最好的,所以算下来是平均情况居多
但是,平均情况经常不可能准确得到,所以通常它是指的一种数学期望值
最好时间复杂度
最好的情况就是待处理数据就是我们想要的数据形式,那么此时时间复杂度为:O(1),但这没什么意义
我并不是说最好时间复杂度是O(1),可能是吧,但是一般认为:考虑最好情况下的复杂度没有意义
结论
一般来说,当我们说“时间复杂度”时,一般指的是平均时间复杂的
如果明确说“最坏”、“平均”或者“最好”那么就没有异议
- 大O符号与时间复杂度
- 时间复杂度(大O)
- 时间复杂度与大O记法的理解
- 数据结构中大O时间复杂度推论
- 算法时间复杂度-推导大O阶
- 大O表示法_时间复杂度
- 大O符号/大Ω符号/大Θ符号/小o符号/小w符号等各种算法复杂度记法含义
- 算法的时间复杂度(大O表示法)
- 时间复杂度O()
- 算法时间复杂度的表达-渐进符号与主定理
- 大O符号
- 大O符号
- 算法时间复杂度Θ(n2)与 O(n2)
- 符号三角形问题;回溯算法;子集树问题;时间复杂度O(2的n次方);
- 算法时间复杂度的符号
- 算法的时间复杂度(大O表示法,其中O是个常量)
- C++链表划分左边小中间等右边大 时间复杂度O(n) 空间复杂度O(1)
- LCS时间复杂度O(NlogN)
- lightoj 1140 - How Many Zeroes? 数位DP
- JavaScript资料收集
- NSLog 字符含义
- Chapter 13:Understanding HTML&Assignment
- 置位比特位置查找java
- 大O符号与时间复杂度
- Java 集合类整理
- C3P0数据库连接池的使用工具和使用数据库连接池来进行查询操作
- Android 关于小米手机拍照图片返回路径的处理
- 水池数目
- 程序开发心理学第四篇
- 硬盘管理心得
- 从两个有序数组的并集中寻找第k小元素
- iOS开发拓展篇-XMPP简单介绍