What is the difference between Big(O) and small(o) notations in asymptotic analysis?
Bigoh notation $O$:

This is anlogous to $\le$.
$f(n) = O(g(n))$ means that for large enough value of $n$ value of $f(n)$ will be within some constant factor of value of $g(n).$

Smalloh notation $o$:

This is anlogous to $&lt;$ relation.
Now, $f(n) = o(g(n))$ means that if you are given any constant $c&gt;0$ you will be able to find out some constant $n_0&gt;0$ such that for all $n\ge n_0$, $f(n) &lt; c.g(n)$ holds.

Intuitively smalloh notation says that $f(n)$ is asymptotically slower than $g(n)$.

For example $3n = O(5n)$ but $3n\ne o(5n)$ because for latter case if I give you $c=1/5$ you will not able to find out value of $n_0$ such that for all $n\ge n_0, 3n &lt; c.5n$.