Merging or partitioning?
Divide&Conquer sorting falls into two categories: Split&Merge (most work in the merge phases) or Partition&Pool (most work during partitioning phases). Which is better? A prototypical stable deterministic balanced binary Mergesort uses 100% buffer and uses per recursion-level one read-scan with comparisons for the input-data and one write-scan for the merge. A prototypical stable deterministic balanced binary Partitionsort uses 100% buffer, one read-scan and further writing and reading for calculating an (approximate) median as pivot, a read-an-compare-scan for counting the size of the resulting (two) partitions and finally a read-scan and a write-scan for the actual partitioning. Certain sacrifices allow to save some of this work: dropping reliability (determinism) saves the work for calculating the median, further dropping stability and generality allows to saves the buffer and the counting-scan and leads to an attractive family of algorithms: Quicksorts.