O(1) = constant: the operation doesn’t depend on the size of its input
O(n) = linear: the run time complexity is proportionate to the size of n
O(log n) = logarithmic: normally associated with algorithms that break the problem into smaller chunks
O(n log n) = just n log n: usually associated with an algorithm that breaks the problem into smaller chunks per each invocation, and then takes the results of the smaller chunks and stitches them back together