← Back to Blog

Common Time Complexity Classes Explained

2023-07-25

Overview of Time Complexity Classes

Time complexity classes categorize algorithms based on how their runtime grows with input size. Understanding these classes helps in choosing the right algorithm for a given problem.

O(1) - Constant Time

Algorithms that always take the same amount of time, regardless of input size.

Example: Accessing an array element by index.

O(log n) - Logarithmic Time

Algorithms that reduce the problem size by a constant factor in each step.

Example: Binary search in a sorted array.

O(n) - Linear Time

Algorithms whose runtime grows linearly with the input size.

Example: Linear search in an unsorted array.

O(n log n) - Linearithmic Time

Often seen in efficient sorting algorithms that use divide-and-conquer strategies.

Example: Merge sort, Quicksort (average case).

O(n²) - Quadratic Time

Algorithms with nested iterations over the input.

Example: Bubble sort, nested loops iterating over an array.

O(2ⁿ) - Exponential Time

Algorithms whose runtime doubles with each additional input element.

Example: Recursive calculation of Fibonacci numbers without memoization.

Comparison of Time Complexities

For n = 1,000,000:

  • O(1): 1 operation
  • O(log n): ~20 operations
  • O(n): 1,000,000 operations
  • O(n log n): ~20,000,000 operations
  • O(n²): 1,000,000,000,000 operations

Conclusion

Understanding these common time complexity classes is crucial for algorithm analysis and design. It helps in making informed decisions about which algorithms to use based on input size and performance requirements.