merge sort algorithm using divide and conquer