that the function is ( )if this is the running time of an algorithm being compared to one whose running time is nlognwe should prefer the (nlogntime algorithmeven though the linear-time algorithm is asymptotically faster this preference is because the constant factor which is called "one googol,is believed by many astronomers to be an upper bound on the number of atoms in the observable universe so we are unlikely to ever have real-world problem that has this number as its input size thuseven when using the big-oh notationwe should at least be somewhat mindful of the constant factors and lower order terms we are "hiding the observation above raises the issue of what constitutes "fastalgorithm generally speakingany algorithm running in (nlogntime (with reasonable constant factorshould be considered efficient even an ( time method may be fast enough in some contextsthat iswhen is small but an algorithm running in ( ntime should almost never be considered efficient exponential running times there is famous story about the inventor of the game of chess he asked only that his king pay him grain of rice for the first square on the board grains for the second grains for the third for the fourthand so on it is an interesting test of programming skills to write program to compute exactly the number of grains of rice the king would have to pay in factany java program written to compute this number in single integer value will cause an integer overflow to occur (although the run-time machine will probably not complainto represent this number exactly as an integer requires using biginteger class if we must draw line between efficient and inefficient algorithmsthereforeit is natural to make this distinction be that between those algorithms running in polynomial time and those running in exponential time that ismake the distinction between algorithms with running time that is (nc)for some constant and those with running time that is (bn)for some constant like so many notions we have discussed in this sectionthis too should be taken with "grain of salt,for an algorithm running in ( time should probably not be considered "efficient even sothe distinction between polynomial-time and exponential-time algorithms is considered robust measure of tractability to summarizethe asymptotic notations of big-ohbig-omegaand big-theta provide convenient language for us to analyze data structures and algorithms as mentioned earlierthese notations provide convenience because they let us concentrate on the "big picturerather than low-level details two examples of asymptotic algorithm analysis