Divide-and-conquer algorithms