merge sort using divide and conquer approach