Big-O Notation Cheat Sheet: quick answers to Big-O questions

Oct 16, 2020 - 5 min read
Jerry Ejonavi
editor-page-cover

Big O notation (sometimes called Big omega) is one of the most fundamental tools for programmers to analyze the time and space complexity of an algorithm. Big O notation is an asymptotic notation to measure the upper bound performance of an algorithm.

Your choice of algorithm and data structure matters when you write software with strict SLAs or large programs. Big O Notation allows you to compare algorithm performance to find the best for your given situation. The Big O rating helps to ensure you have a lower running time than competitors.

This article aims to provide quick answers about common questions on Big O notation you might have or you might face in an interview.

Let’s get started!


Master Big O complexity for any structure or algorithm

Learn to answer any Big-O complexity question with approachable and interactive lessons.

Big-O Notation For Coding Interviews and Beyond



What is Big O Notation?

Big O Notation is a mathematical function used in computer science to describe an algorithm’s complexity. It is usually a measure of the runtime required for an algorithm’s execution.

But, instead of telling you how fast or slow an algorithm’s runtime is, it tells you how an algorithm’s performance changes with the size of the input (size n).

The biggest factors that affect Big O are the number of steps and the number of iterations the program takes in repeating structures like the for loop.

For our formal definition, we define O(g(n))O(g(n)) as a set of functions and a function f(n)f(n) can be a member of this set if it satisfies the following conditions:

00f(n)f(n)cg(n)0cg(n)0f(n)f(n)cg(n)cg(n)

constant c is a positive constant and the inequality holds after input size n crosses a positive threshold n0n0

If an algorithm performs a computation on each item in an array of size n, we can say the algorithm runs in O(n)O(n) time (or it has constant time complexity) and performs O(1)O(1) work for each item.


What is space complexity and time complexity?

The time complexity of an algorithm quantifies the amount of time taken by an algorithm to run as a function of the length of the input. Similarly, the Space complexity of an algorithm quantifies the amount of space or memory taken by an algorithm to run as a function of the length of the input.

Both depend on several external factors such as computer hardware, operating system, etc, but none of these factors are considered when running an analysis on the algorithm.

Here’s some common complexities you’ll find for algorithms:

  • Quadratic time: O(n2)O(n^2)

  • Linear time: O(n)O(n)

  • Logarithmic time: O(nlogn)O(n log n)

  • Exponential time: 2polyn2 ^{polyn}

  • Factorial time: O(n!)O(n!)

  • Polynomial time: 2O(logn)2^{O(log n)}

What are functions?

A function is a routine that accepts an input and returns an output. It is expressed as f(n)=n2f(n)=n^2, where the output n2n^2 is defined in terms of the input n.


Big O Notation for data structures

Data Structure Insert Retrieve
Array O(1)O(1) O(1)O(1)
Linked List At Head: O(1)O(1)
At Tail: O(n)O(n)
O(n)O(n)
Binary Search O(n)O(n) O(n)O(n)
Dynamic Array O(1)O(1) O(1)O(1)
Stack O(1)O(1) O(1)O(1)
Hash Table O(n)O(n) O(n)O(n)

Big O Notation for sorting algorithms

Sorting Algorithm Worst-case scenario Average Case Best-case scenario
Bubble Sort O(n2)O(n^2) O(n2)O(n^2) O(n)O(n)
Insertion Sort O(n2)O(n^2) O(n2)O(n^2) O(n)O(n)
Selection Sort O(n2)O(n^2) O(n2)O(n^2) O(n2)O(n^2)
Quick Sort O(n2)O(n^2) O(nlogn)O(n log n) O(nlogn)O(n log n)
Merge Sort O(nlogn)O(n log n) O(nlogn)O(n log n) O(nlogn)O(n log n)
Heap sort O(nlogn)O(n log n) O(nlogn)O(n log n) O(nlogn)O(n log n)

Note: even though the worst-case quicksort performance is quadratic(O(n2)O(n2)) but in practice, quicksort is often used for sorting since its average case is logarithmic (O(nlogn)O(n log n)).


Wrapping up and next steps

Now that you’ve gotten a handle on the common topics in Big O, you should be suitably prepared to tackle most questions you come across. There are other more technical topics that we didn’t cover such as,

  • Complexity Theory
  • Big Theta notation
  • Lower Bounds Analysis
  • Probabilistic Analysis
  • Amortized Analysis
  • Recursion

If you’d like to learn these topics, check out Educative’s course, Big-O Notation For Coding Interviews and Beyond. The course explains the concepts in layman’s terms and teaches how to reason about the complexity of algorithms without requiring you to have an extensive mathematical skillset. By the end, you’ll be able to face any Big-O interview question with confidence.

Happy Learning!


Continue reading about algorithm optimization


WRITTEN BYJerry Ejonavi

Join a community of 500,000 monthly readers. A free, bi-monthly email with a roundup of Educative's top articles and coding tips.