# Asymptotic Analysis

With time and space complexity, we can analyze an algorithm's time-taking and space-occupying efficiency. However, time and space complexity have their limitations. If we take a linear search algorithm, the time complexity can vary from best to worst.  So, to analyze the varying complexity of the algorithm, we use asymptotic analysis.

In this post, we will shed light on the details of asymptotic analysis for in-depth understanding.

### Asymptotic Analysis

In asymptotic analysis, we use mathematic functions to bind and limit the complexity of an algorithm according to its run-time performance. When we bind an algorithm with its complexity limits, we can easily calculate the time complexity of that algorithm.

As obvious, with an increase in input elements, the time and space complexity of the algorithm will vary from low to high.

For instance, if there are two algorithms:

• The first algorithm complexity in the mathematical function represents f(n), and the other represents g(2n) for the first few elements.
• The function of g(2n) will rise exponentially as compared to f(n), but when they have a huge number of elements, their graph representation will look the same, which would be linear, so for a huge number of n, the complexity of f(n) will be almost equal to g(n).

We often divide the complexity of an algorithm into 3 cases:

• Worst Case
• Average Case
• Best Case

In the worst case, the algorithm takes the maximum amount of time to give an appropriate result. The average case algorithm takes the average time to show the output. Whereas the best-case algorithm takes the minimum time to show the correct result.

### Asymptotic Notation

Asymptotic Notation is used to calculate the running time complexity of an algorithm. There are three methods of representing an asymptotic notation:

#### Big Oh Notation (O)

Big Oh Notation is used to compute the worst-case time complexity of an algorithm. In programming, Big Oh Notation is used as a standard notation to show the time complexity of any algorithm because, when we write a program using an algorithm, we are mostly concerned about the worst-case time complexity of that program.

#### Omega Notation ( Ω )

The omega notation works the opposite of Big Oh Notation. It is used to represent the best time complexity of an algorithm. We require both the worst and the best time complexity of an algorithm to calculate its efficiency.

#### Theta Notation ( Θ )

With theta notation, we can represent both the best and worst time complexity of an algorithm, and we can also calculate the average time complexity.

### Big Oh Notation for Different Constraints Complexity

 Complexity Big Oh Notation Constant time complexity (the best time complexity) O(1) Linear time complexity O(n) Logarithmic time complexity O(log n) n log n time complexity O(n log n) exponential time complexity 2O(n) Cubic time complexity O(n 3 ) Polynomial-time complexity nO(1) Quadratic time complexity O(n2)

## Conclusion

In short, asymptotic analysis measures the efficiency of algorithms based on the input size. The three main asymptotic notations, namely, Big Oh, Omega, and Theta, help measure it effectively. However, the asymptotic analysis is not perfect, but one of the best ways to analyze algorithms.