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语句的,取大的