Merge sort is a sorting algorithm invented by John von Neumann in 1945 that works by dividing an array in half, recursively sorting the halves, and then merging the sorted halves together. It has a time complexity of O(n log n) in all cases. There are two main implementations - an in-place version that merges in the original array and a double memory version that uses a temporary array, which is generally faster but uses more memory. The key steps are dividing, sorting the halves recursively, and then merging the sorted halves back together.