Why do algorithms with runtime of O(n) are said to have asymptotic upper bound, when linear functions don't have asymptotes? When we have only an asymptotic upper bound, we use $O$-notation. For a given function $g(n)$, we denote by $O(g(n))$ (pronounced “big-oh of $g$ of $n$” or sometimes just “oh of $g$ of $n$”) the set of functions
$$O(g(n))= \left\{ f(n):\text{ there exist positive constants }c\text{ and }n_0\text{ such that},\\ 0\leq f(n)\leq cg(n),\text{ for all }n\geq n_0 \right\}$$
This excerpt has been taken from introduction to algorithms 3rd edition. What I fail to understand is that how can algorithms with a linear runtime have an asymptotic upper bound when linear functions don't have asymptotes or is there a loophole in my thinking?
Word &quot;asymptotic&quot; is used to emphasize the condition $\exists n_0\in \mathbb{N}$ $\forall n&gt; n_0$ for inequality $0\leqslant f(n)  \leqslant C g(n)$ and generally does not contain any mention of limit or asymptotic. Even well known definition of O big, using $\lim\sup \frac{f}{g}$, have sense only when limit point for O big is not limit point for $g$'s zeros.
As to linear function, for example $f(n)=an+b$, then it easy to find solution for $an+b \leqslant C n $ finding $C&gt;a$ and taking $ n \geqslant n_0= \lfloor \frac{b}{C-a} \rfloor+1 &gt;0$. So we obtain $f(n)=an+b \in O(n)$ i.e. linear function is O-big $n$.