For those of you who don't like recursion:
http://www.algorithmist.com/index.php/Merge_sort.c
See also:
http://stackoverflow.com/questions/159590/way-to-go-from-recursion-to-iteration
http://stackoverflow.com/questions/1557894/non-recursive-merge-sort
Info and improvements about actual sort used in Java collections:
https://arxiv.org/pdf/1412.0193.pdf