A sorting algorithm takes a list of items and sorts them in a particular order, most commonly alphabetically or numerical.
The study of sorting algorithms is a great way to improve your craft as a software developer. They provide simple algorithms on which complexity analysis can be practised and also introduce some clever solutions to a simple and understandable problem.
Properties of a sorting algorithm
In addition to the time and space complexity of sorting algorithms, the below properties help define sorting algorithms.
|Adaptability||An adaptive sort’s performance improves the more sorted the list is initially|
|In-place||An in-place sort requires a constant amount of additional space|
|Parallelism||A parallel sort can split its workload between multiple workers|
|Stability||A stable sort preserves the order of items in the list that evaluate to the same value|
Visualisations of the sorts powered by sorting-visualiser are available for supported algorithms on their respective pages.
See them all in action on the Sorting Visualiser project page.
TextbooksHere are two CS textbooks I personally recommend; the Algorithm Design Manual (Steven S. Skiena) is a fantastic introduction to data structures and algorithms without getting to deep into the maths side of things, and Introduction to Algorithms (CLRS) which provides a much deeper, math heavy look.