Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity. In computer science, it's used to classify algorithms according to how their run time or space requirements grow as the input size grows.
Big O notation characterizes functions according to their growth rates: different functions with the same growth rate may be represented using the same O notation.
Select which complexity functions to display and adjust the input size (n) to see how the number of operations scale.
| Notation | Name | Example Algorithms / Operations | Description |
|---|---|---|---|
| O(1) | Constant | Array access (arr[i]), Hash table insertion/lookup (average) |
The operation takes the same amount of time regardless of the input size. |
| O(log n) | Logarithmic | Binary search, Balanced BST operations | Time increases very slowly as input size grows. Efficient for large datasets. |
| O(n) | Linear | Linear search, Traversing an array/list | Time increases directly proportional to the input size. |
| O(n log n) | Linearithmic | Merge sort, Heap sort, Quick sort (average) | Efficient sorting algorithms. Scales well. |
| O(n²) | Quadratic | Bubble sort, Selection sort, Nested loops iterating over same data | Time increases significantly with input size. Can become slow quickly. |
| O(2ⁿ) | Exponential | Recursive Fibonacci (naive), Traveling Salesman (brute force) | Time grows extremely fast. Impractical for anything beyond small inputs. |
Searching a sorted list of 1,000,000 items:
O(n)) might need up to 1,000,000 comparisons.O(log n)) needs at most log₂(1,000,000) ≈ 20 comparisons.Sorting 10,000 items:
O(n²)) performs roughly 100,000,000 operations.O(n log n)) performs roughly 130,000 operations.Efficient algorithms (like O(n log n)) are crucial for performance on larger datasets.
Finding duplicate items in a list by comparing every pair:
for i = 0 to n-1:
for j = i+1 to n-1:
if list[i] == list[j]:
return True // Found duplicate
This nested loop structure results in O(n²) complexity.