Big O (often pronounced order) is an abstract function that
describes how fast a function grows as the size of the problem becomes large.
The order given by Big O is a least upper bound on the rate of growth.

We say that a function T(n) has order O(f(n)) if there exist
positive constants c and n0 such that: T(n) &le c * f(n) when n &ge n0.