divide and conquer approach merge sort