and recursive calls--so that you can get the most efficient run times for your algorithms the biggest asset that big oh notation gives us is that it allows us to essentially discard things like hardware if you have two sorting algorithmsone with quadratic run timeand the other with logarithmic run time then the logarithmic algorithm will always be faster than the quadratic one when the data set becomes suitably large this applies even if the former is ran on machine that is far faster than the latter whybecause big oh notation isolates key factor in algorithm analysisgrowth an algorithm with quadratic run time grows faster than one with logarithmic run time it is generally said at some point as the logarithmic algorithm will become faster than the quadratic algorithm big oh notation also acts as communication tool picture the sceneyou are having meeting with some fellow developers within your product group you are discussing prototype algorithms for node discovery in massive networks several minutes elapse after you and two others have discussed your respective algorithms and how they work does this give you good idea of how fast each respective algorithm isno the result of such discussion will tell you more about the high level algorithm design rather than its efficiency replay the scene back in your headbut this time as well as talking about algorithm design each respective developer states the asymptotic run time of their algorithm using the latter approach you not only get good general idea about the algorithm designbut also key efficiency data which allows you to make better choices when it comes to selecting an algorithm fit for purpose some readers may actually work in product group where they are given budgets per feature each feature holds with it budget that represents its uppermost time bound if you save some time in one feature it doesn' necessarily give you buffer for the remaining features imagine you are working on an applicationand you are in the team that is developing the routines that will essentially spin up everything that is required when the application is started everything is great until your boss comes in and tells you that the start up time should not exceed ms the efficiency of every algorithm that is invoked during start up in this example is absolutely key to successful product even if you don' have these budgets you should still strive for optimal solutions taking quantitative approach for many software development properties will make you far superior programmer measuring one' work is critical to success imperative programming language all examples are given in pseudo-imperative coding format and so the reader must know the basics of some imperative mainstream programming language to port the examples effectivelywe have written this book with the following target languages in mind + java