时间复杂度

1、定义

算法复杂度是衡量代码执行时,所消耗资源的多少,包括时间资源和内存资源,分别对应于时间复杂度和空间复杂度。

针对时间复杂度,假设问题规模n,记时间频度T(n),引入辅助函数f(n),如果存在正常数c,使得c*f(n) >= T(n)恒成立,则称O(f(n))为渐进时间复杂度,记作T(n)=O(f(n))。其本质是,利用极限工具,将问题进一步抽象简化,用问题中主要矛盾f(n)来更方便地评估算法的复杂程度。

2、作用

定性评估算法复杂程度,可作为算法比较或者算法改进的依据。

根据时间复杂度的阶次,可分为常数阶、对数阶、线性对数阶、平方阶、立方阶等。

3、举例

for (int i=0; i<n; i++)                // L1
    for(int j=0; j<n; j++)             // L2
        cout << a[i][j] << endl;       // L3

代码执行次数:

1)L1:1+n+n = 2n+1

2)L2:n(1+n+n)=2n2+n

3)L3:n*n=n2

因此,T(n) = 3n2+3n+1

故,f(n) = n2

即时间复杂度为O(n2)

posted @ 2019-01-19 19:05  chenyunf22  阅读(143)  评论(0编辑  收藏  举报