divide and conquer approach sorting algorithm