Big O Notation is a mathematical notation that is used to describe how algorithm's execution time grows as input size increases. It describes **worst-case scenario** and it's useful for comparing algorithms' performance at scale.
> If I put a certain amount of data in the particular algorithm, how much slower will it get?
Big O Notation is used to answer this question.
| Notation | Complexity |
| ------------ | ----------- |
| O(1) | Constant |
| O(n) | Linear |
| O(log n) | Logarithmic |
| O(n * log n) | Log linear |
| O(n^2) | Quadratic |
### See also
1. [[Why do we care about growth trend rather than actual time in Big O Notation?]]
2. [[What is time complexity for Python built-in functions?]]
3. [[Constant Time Complexity - O(1)]]
4. [[Linear Time Complexity - O(n)]]
5. [[Logarithmic Time Complexity - O(log n)]]
6. [[Quadratic Time Complexity - O(n2)]]
7. [[Log Linear Time Complexity - O(n * log n)]]