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

mac2022-06-30  37

常用算法复杂度函数比较

c < log ⁡ 2 n < n < ⟨ n log ⁡ 2 n < n 2 < n 3 < 1 0 n c<\log _{2} n<n<\left\langle n \log _{2} n<n^{2}<n^{3}<10^{n}\right. c<log2n<n<nlog2n<n2<n3<10n

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常量复杂度

最新回复(0)