When going through computer sciences classes, coding interview process or direct data manipulation : the topic of sorting algorithms arises without a doubt!

Sorting algorithms are a great starting point for the study of algorithms in general: if you can understand arrays, you can understand sorting algorithms. Consider this module as a second introduction to algorithmic thinking and remember there is no necessity to memorize algorithms, the key is to get insight.

For each algorithm, we can play with interactive visualizations online, consult illustrated descriptions and download the source code used.

To sum up, we will not just learn sorting algorithms but also some fundamental computer sciences concepts.

The main objective is to have a peek, through the sorting algorithms, on some programming concepts such as recursive functions, data fusion, divide and conquer strategy, parallelization, partition method and analysis from footprints.

We will see how different approaches can yield more efficient code. Moreover, for those who want to get further: we will also see how to calculate our algorithm performances, either in time or space, using algorithms complexity (big O notation).

What is next?

Now you may study further data structures such as a stack and queue. You may also jump to the fractal or maze generations modules to get more fun.

This cheat sheet provides a very good overview of the main sorting algorithms complexities (source: bigocheatsheet).