Suppose (ideally… again, ideally) that you have created different algorithms to solve a particular problem. Now, suppose that you have determined the order for those algorithms using Big-O notation. Which algorithm performs better?
This ABC goes like this:
O(1) < O(log N) < O(N) < O(N log N) < O(N^2) < O(2^N) < O(N!) < O(N^N)
Constant running time is the best… then logarithmic, linear, linearithmic, quadratic, exponential, factorial and I leave the name of the last one to you :-)
Having constant, logarithmic and linear algorithms should be you goal, although this might be difficult to achieve. In real world problems, if your solution algorithm is higher than quadratic, I would advise you to drop it…
I have seen lots of people get frozen with a simple question: which function grows faster? Remember the correlation above…it’s easy.
Notice: Having a O(1) ,O(log N) or O(N) algorithm doesn’t guarantee that your code is well written or optimized. Even with those orders there might be place for improvements and refactoring.