空间复杂度与时间复杂度入门例子

常用算法复杂度函数比较

c < log ⁡ 2 n < n < ⟨ n log ⁡ 2 n < n 2 < n 3 < 1 0 n c<\log _{2} nc<log2n<n<nlog2n<n2<n3<10n
空间复杂度与时间复杂度入门例子_第1张图片

eg:

int a = 0, i = N; 
while (i > 0) { 
    a += i;  # 1个操作
    i /= 2;   #1个操作
}

设该算法共循环了x次,因为i被递归除即多次除以同一个数的逆过程相当于该数的指数形式,即用指数公式这个桥两头可以互通,即

2 x = N x = log ⁡ 2 N \begin{aligned} 2^{x} &=N \\x &=\log _{2} N \\ \end{aligned} 2xx=N=log2N
循环中一共有两个操作,则其时间复杂度要乘2:
O ( 2 ⋅ log ⁡ 2 N ) = 2 ⋅ O ( log ⁡ N ) = O ( log ⁡ N ) \begin{aligned}O\left(2 \cdot \log _{2}^{N}\right) &=2 \cdot O(\log N) \\ &=O(\log N) \end{aligned} O(2log2N)=2O(logN)=O(logN)
用了两个变量所以空间复杂度为
O ( 2 ) = O ( 1 ) \begin{aligned} O(2)=O(1) \end{aligned} O(2)=O(1)
constant常量复杂度

你可能感兴趣的:(algorithm)