Selection Sort
The selection sort is also relatively intuitive, but may out-perform bubble and insertion sorts because it makes fewer swaps on average.

It works by:
- maintaining a sorted section on the left side of the array.
 - the left side will always contain the smallest items in the array (assuming an ascending sort).
 - A cursor iterates from left to right.
 - In each iteration, the algorithm “selects” the next smallest item in the remaining unsorted array. Then it swaps that with the cursor.
 
The selection sort is:
- stable, equal elements maintain their relative order
 - in-place, it uses no significant extra memory to run.
 - inefficient, having O(n^2) performance.
 - not possible to run in parallel.
 - works with non-numerical types, it uses a comparator.
 
The main advantage of the selection sort is it requires fewer swaps to run than insertion sort, so it can out-perform that.