Big O notation is the worst case running time for an algorithm, and is the number of operations it takes to complete based on an input size n
O(1) - constant time - the running time doesn’t change even when the amount of inputs change
O(log n) - the algorithm cuts n in half for each iteration
O(n) - running time is directly proportional to the number of inputs
O(n log n) - algorithm has to look at each element at least once, then there’s an additional step that divides n in half for each iteration. log n! simplifies to n log n
O(n²) - nested iterations/loops - running time is proportional to the square of the amount of inputs


















