The merge sort algorithm was invented by John von Neumann in .

A merge sort algorithm is an algorithm that divides the unsorted list into sublists, each containing one element, and then repeatedly merges sublists to produce larger sorted sublists.

One optimization for Merge Sort is to switch to insertion sort for small sub-arrays, as this can reduce the overhead of the merge process. This is known as Sort.