时间复杂度
事后统计和事前分析
一个算法的效率,可以通过其在计算机上运行的时间来评估,这叫事后统计
,但编译和运行环境的不同会导致运行时间不同,所以这种方法并不科学。
使用统计法估算算法基本运算的次数,这种数学方法叫事前分析
。显然事前分析更科学。
时间频度和时间复杂度
假设有一个对长度为n的数组排序的算法,它的基本运算次数和n的关系可用函数 T(n) = 5n3 + 3n2 + 6来表示,那么称T(n)为此算法的时间频度
,又名语句频度
。
在n趋于无穷大时,T(n)和n3的比例是个常数,从复杂度
方面来讲,T(n)和n3是一样的,也就是说T(n)和n3具有相同的复杂度。在评估一个算法的复杂度时,我们只关心其最高次项,并不关心低次项和最高次项度系数,我们将O(T(n))定义为算法的时间复杂度
。
注意,时间频度和时间复杂度的测量对象是不同的,时间频度测量的是算法的基本运算次数,是个相对精准的概念,时间复杂度测量的是算法的复杂度,是个比较笼统的概念。
问题
- 时间复杂度是什么?
- T(n) = O(f(n)) 中的
O
是什么意思? - 为什么要用
O
来表示时间复杂度?
版权声明:本文为博主原创文章,转载请注明出处。