Terminology
The terminology used when discussing the space and time complexity of an algorithm is something that one, as a developer, will come across very often. Popular terms such as Big-O, also known as O (something), and some not-so-popular terms such as Omega (something) or Theta (something) are often used to describe the complexity of an algorithm. The O actually stands for Order, which represents the order of the function.
Let's first talk only about the time complexity of an algorithm. This basically boils down to us trying to figure out how long it will take for a system to execute our algorithm for a given dataset (D). We can technically run this algorithm on the said system and log its performance, but since not all systems are the same (for example, OS, number of processors, and read write speeds), we can't necessarily expect the result to truly represent the average time it would take to execute our algorithm for our dataset, D. At the same time, we would also need to know how...