Merge sort

Merge sort is usually implemented recursively.

Algorithm
  break the list into two smaller lists   recursively sort each of the smaller lists   iteratively merge the two sorted lists  