We might sometimes seek a tradeoff among space & time complexity. For instance, we may have to select a data structure which requires a lot of storage to reduce the computation time. Thus, the programmer has to make a judicious choice from an informed point of view. The programmer have to have some verifiable basis based on which a data structure or algorithm can be selected Complexity analysis provides such a basis.
We will learn regarding various techniques to bind the complexity function. Actually, our goal is not to count the exact number of steps of a program or the exact amount of time needed for executing an algorithm. In theoretical analysis of algorithms, this is common to estimate their complexity in asymptotic sense that means to estimate the complexity function for reasonably large length of input 'n'. Omega notation ?, big O notation, and theta notation Θ are utilized for this purpose. To measure the performance of an algorithm underlying the computer program, our approach would be depending on a concept called as asymptotic measure of complexity of algorithm. There are notations such as big O, Θ, ? for asymptotic measure of growth functions of algorithms. The most common is big-O notation. The asymptotic analysis of algorithms is frequently used since time taken to execute an algorithm varies along with the input 'n' and other factors that might differ from computer to computer and from run to run. The essences of these asymptotic notations are to bind the growth function of time complexity along with a function for sufficiently large input.