normal merge_sort
avoid allocating memory once and once again