时间复杂度

事后统计和事前分析

一个算法的效率,可以通过其在计算机上运行的时间来评估,这叫事后统计,但编译和运行环境的不同会导致运行时间不同,所以这种方法并不科学。

使用统计法估算算法基本运算的次数,这种数学方法叫事前分析。显然事前分析更科学。

时间频度和时间复杂度

假设有一个对长度为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来表示时间复杂度?
posted @ 2017-05-23 09:11  swyang  阅读(143)  评论(0编辑  收藏  举报