#
Geometric Series Shortcuts
For a constant r \in \R_{>0} and some upper bound k (k\in\Z is not required when we are dealing with big Os since we can bound it with \lceil k\rceil), we have this nice shortcut to get the upper bound:
\begin{aligned}
\sum^k_{n=0} r^n &= 1 + r + r^2 + \cdots + r^k\\
&= \begin{cases}
O(r^k) & \text{if } r > 1\\
O(k) & \text{if } r = 1\\
O(1) & \text{if } r < 1
\end{cases}
\end{aligned}The basic idea is to bound each term in this series. For example when r > 1, the last term of the series r^k is the largest. So we can bound each term with it and get:
\sum^k_{n=1} r^n \leq \sum^k_{n=1}r^{\red k} = O(kr^k) = O(r^k)When r=1, it's just k. Since we are conveniently allowing non-integer k values, the bound is O(k) instead of just k.
Similarly when r <1, the first term dominates since the rest is just powers of 0<r<1.
#
Examples
T(n) = 3T\left(\frac n2\right) + O(n)
Expand, the number of levels is i = \log_2n
T(n) \leq cn\cdot \left(1 + \frac 32 + (\frac32)^2 + \cdots (\frac32)^{\log_2(n-1)}\right) + 3