Big O Notation
Big O notation is a language to express how long an algorithm will take to run. Instead of measuring the exact runtime of an algorithm (which depends on the processor's speed), Big O notation will tell us how quickly the runtime grows relative to its input variable.
O(1) time or constant time
public static void printFirstItem(int[] items) {
System.out.println(items[0]);
}
O(n) time or linear time
public static void printAllItems(int[] items) {
for (int item : items) {
System.out.println(item);
}
}
O(n^2) time or quadratic time
public static void printAllPossibleOrderedPairs(int[] items) {
for (int firstItem : items) {
for (int secondItem : items) {
System.out.println(firstItem + ", " + secondItem);
}
}
}
Drop constants
Constants are thrown out when calculating Big O
As input n gets arbitrarily large, the significance of constant value decreases drastically
public static void printFirstItemThenFirstHalfThenSayHi100Times(int[] items) {
System.out.println(items[0]);
int middleIndex = items.length / 2;
int index = 0;
while (index < middleIndex) {
System.out.println(items[index]);
index++;
}
for (int i = 0; i < 100; i++) {
System.out.println("hi");
}
}
This is O(1 + n/2 + 100), which we just call O(n)
Links: https://www.interviewcake.com/article/java/big-o-notation-time-and-space-complexity
Last updated
Was this helpful?