divide and conquer approach in design and analysis of algorithm