Merge sort is a divide and conquer algorithm for sorting a array of elements. Typically, it proceed like this,
- Breaks array into two half size arrays
- Breaks the half size arrays repeatedly until array reach size of 1
- Merge the arrays, comparing the elements, starting from size 1 and work the level up
- Finaly merged array is a sorted array