Divide and Conquer Algorithms