时间复杂性O(f(n))

1、基本内容与常见时间复杂度对应的结构

① T(n) =次数表示式,表示的是执行的次数; O(n) 通过T(n)的抓大头等操作后这就是时间复杂度,有O(1)、O(logn)、O(n)、O( nlogn)、O(n^2)、O(n^3)、O(2^n) 这些, 对应的结构是:

O(1) : 没有for循环体的最上而下的时间复杂性是O(n)

O(n) : 有一层for循环的

O(n^a) : 有a层for 循环的

O(logn) : for (int i=1; i < n; i*=2) {..} T(n)=log2n-1 时间复杂度为O(logn)

 

特别地:for (int i=0; i < n; ++i) {

for (int j=i; j < n; ++j) {...}

}

这种只需算最深层执行的次数即可,T(n) = n + (n-1) + (n-2) + (n-3) + ... +2+1 = Sn = [(1+n)n]/2 即时间复杂度为O(n^2), 也是符合a层循环,时间复杂度为O(n^a) 的。

2、注意点

①  注意,1、如果有两个同级的for循环取最大的。 O(n) < O(n^2)

② 有if else语句的,取大的

 

上一篇:redis底层数据结构(1)跳跃表


下一篇:算法(2)---算法复杂度理论