Time Complexity

How algorithm runtime scales with input size (Big O).

Time complexity measures how the execution time of an algorithm scales as input size (n) increases. It's expressed using Big O notation, which describes the upper bound (worst-case) growth rate.

Common time complexities:
- O(1) Constant: Same time regardless of input (array index access)
- O(log n) Logarithmic: Halves problem each step (binary search)
- O(n) Linear: Time proportional to input (single loop)
- O(n log n) Linearithmic: Efficient sorting (mergesort, quicksort)
- O(n²) Quadratic: Nested loops (bubble sort)
- O(2ⁿ) Exponential: Doubles each step (naive recursion)

Big O focuses on dominant terms as n→∞, ignoring constants and lower-order terms.

        graph LR
  Center["Time Complexity"]:::main
  Pre_algorithm["algorithm"]:::pre --> Center
  click Pre_algorithm "/terms/algorithm"
  Rel_space_complexity["space-complexity"]:::related -.-> Center
  click Rel_space_complexity "/terms/space-complexity"
  Rel_algorithm["algorithm"]:::related -.-> Center
  click Rel_algorithm "/terms/algorithm"
  Rel_big_o_notation["big-o-notation"]:::related -.-> Center
  click Rel_big_o_notation "/terms/big-o-notation"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explain Like I'm 5

Imagine counting how many steps it takes to find a toy. If you always find it immediately, that's O(1). If you check every box one by one, that's O(n). Time complexity tells us how much longer things take as we have more stuff!

🤓 Expert Deep Dive

Amortized analysis averages costs over sequences (dynamic array append is O(1) amortized). Big-Θ (tight bound), Big-Ω (lower bound) complement Big-O. Master theorem solves recurrences T(n) = aT(n/b) + f(n). Cache complexity accounts for memory hierarchy. Practical performance can differ from Big-O due to constant factors, cache effects, and branch prediction.

🔗 Related Terms

Prerequisites:

📚 Sources