Conrad Reeves recently published an article on Big O notation on That Computer Scientist, in which he tries to explain this – seemingly daunting – subject as easily as possible.
Big O notation is a method for ranking an algorithm’s efficiency in terms of time (e.g. CPU cycles) or space (i.e. storage or memory) requirements. In a nutshell, Big O notation allows you to make rough approximations like for example: “In a best case scenario the algorithm in question at most will consume as many CPU cycles as a hypothetical algorithm described by this function multiplied by a constant factor.”
For example, an algorithm with an efficiency of O(n²) will at most require the same time or space as f(x) = n * x²
with x meaning the number of elements to be processed and n signifying an arbitrary factor.
As a maths professor once put it to me: “Big O is a way of describing something imprecise in exact terms.”