Algorithms overview

On their own, data structures usually aren't too useful. Their power becomes much more evident when they're used to create algorithms to solve various problems.

In the next few sections, we'll be covering a variety of algorithms for solving different problems. An algorithm can be thought of as a funnel that takes in some input, executes some finite number of steps and outputs some result.

Given a specific input, some algorithms will always produce the same output. These are referred to as deterministic algorithms. Other algorithms might produce different output for the same input; unsurprisingly, they're known as non-deterministic algorithms.

There are also algorithms whose steps might change randomly from one execution of the algorithm to another. These are known as randomised algorithms. And we also have parallel algorithms, which can execute multiple steps simultaneously on different machines. The various types of algorithms and the ways in which they can be executed are broad.

We'll cover some common deterministic, non-randomised algorithms for solving well-known but interesting problems: