时间复杂度

Posted chenyunf22

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间复杂度相关的知识,希望对你有一定的参考价值。

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)

以上是关于时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?

基于时间复杂度的这些片段真的很困惑

用于数据加载的 Android 活动/片段职责

PAT 乙级 1049 数列的片段和

PAT1049-----枚举法,找规律题,注意降低时间复杂度