top down merge sort
bottom up merge sort