码迷,mamicode.com
首页 > 其他好文 > 详细

时间复杂度

时间:2019-01-19 21:07:47      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:举例   评估   比较   问题   时间复杂度   span   col   代码   辅助   

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)

时间复杂度

标签:举例   评估   比较   问题   时间复杂度   span   col   代码   辅助   

原文地址:https://www.cnblogs.com/chenyunf22/p/10292950.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!