From Algorithm Wiki
*Advantages: suitable for linked list, suitable for external sort. *Disadvantages: need extra buffer holding the merged data (but for linked-list)
*Advantages: easy to implement. *Disadvantages: too slow and become impractical when data is huge.
*Advantages: don't need recursion. Suitable for large data. *Disadvantages: usually slower than merge sort and quick sort.
*Advantages: practical fastest. *Disadvantages: recursive, worst case too slow.