Big O Notation

Understanding Big O: A Practical Guide for Developers

When you write code, it’s not just about making it work—it’s about making it work well. One of the most important aspects of “working well” is how your code scales as the amount of data grows. This is where Big O notation comes in.

What is Big O?

Big O notation is a mathematical way to describe the complexity of an algorithm, both in terms of time (how long it takes to run) and space (how much memory it uses). It helps you answer the question: “How does my code perform as the input size increases?”

Why Should You Care?

The Main Big O Classes

O(1) — Constant Time

An operation is O(1) if it takes the same amount of time regardless of input size.
Example: Accessing the first element of an array.

const nums = [1, 2, 3, 4, 5];
const first = nums[0]; // Always one operation, no matter the array size

O(n) — Linear Time

An O(n) operation’s time grows linearly with the input size.
Example: Summing all elements in an array.

let sum = 0;
for (let num of nums) {
  sum += num;
}

O(n²) — Quadratic Time

O(n²) means the time grows with the square of the input size, often due to nested loops.
Example: Checking for duplicates with a brute-force approach.

function hasDuplicates(nums) {
  for (let i = 0; i < nums.length; i++) {
    for (let j = 0; j < nums.length; j++) {
      if (i !== j && nums[i] === nums[j]) return true;
    }
  }
  return false;
}

O(log n) — Logarithmic Time

O(log n) algorithms cut the problem size down by a fraction each time, like binary search.
Example: Searching for a value in a sorted array.

function binarySearch(nums, target) {
  let left = 0, right = nums.length - 1;
  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    if (nums[mid] === target) return mid;
    if (nums[mid] < target) left = mid + 1;
    else right = mid - 1;
  }
  return -1;
}

Key Takeaways

Final Thoughts

Big O isn’t just for academics or interviewers—it’s a practical tool for every developer. Next time you write a loop or a nested loop, ask yourself: “Can I do better?” Sometimes, a small change in approach can make your code scale from millions of operations to just a handful.