we will have difficulty comparing the experimental running times of two algorithms unless the experiments were performed in the same hardware and software environments we have to fully implement and execute an algorithm in order to study its running time experimentally this last requirement is obviousbut it is probably the most time consuming aspect of performing an experimental analysis of an algorithm the other limitations impose serious hurdles tooof course thuswe would ideally like to have an analysis tool that allows us to avoid performing experiments in the rest of this we develop general way of analyzing the running times of algorithms thattakes into account all possible inputs allows us to evaluate the relative efficiency of any two algorithms in way that is independent from the hardware and software environment can be performed by studying high-level description of the algorithm without actually implementing it or running experiments on it this methodology aims at associatingwith each algorithma function (nthat characterizes the running time of the algorithm as function of the input size typical functions that will be encountered include the seven functions mentioned earlier in this primitive operations as noted aboveexperimental analysis is valuablebut it has its limitations if we wish to analyze particular algorithm without performing experiments on its running timewe can perform an analysis directly on the high-level pseudo-code instead we define set of primitive operations such as the followingassigning value to variable calling method performing an arithmetic operation (for exampleadding two numberscomparing two numbers indexing into an array following an object reference returning from method