Intermediate Topic 22 of 51 Algorithms
Divide and Conquer
Splitting a problem into subproblems solved independently then combined.
How it works
Divide and conquer splits a problem into smaller independent subproblems of the same kind, solves them recursively and combines their answers. Running time is described by recurrences such as T(n) = 2T(n/2) + O(n), solved with the master theorem. The approach naturally exposes parallelism because subproblems do not depend on each other.
Step-by-step walkthrough
- Split the problem into independent smaller parts.
- The second half is split too.
- Each half is solved recursively down to trivial cases.
- Sub-answers flow back up.
- The combine step merges them into the answer, as merge sort does.
Where it is used
Merge sort, quicksort, binary search, fast exponentiation, Karatsuba multiplication, the closest pair of points, FFT and Strassen's matrix multiplication use divide and conquer.
Common pitfall
If subproblems overlap, the same work is repeated exponentially and dynamic programming is the better tool. Recursion overhead hurts for tiny inputs, so use a cutoff to a simple method. The combine step can dominate cost, and unbalanced splits degrade performance.
Where it fits in the course
Divide and Conquer is topic 22 of 51 in Algorithms, rated Intermediate. It follows Timsort. The next topic is Master Theorem.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Algorithms quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Algorithms quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Divide and Conquer?
Where do people use Divide and Conquer?
What is the most common mistake with Divide and Conquer?
What should I learn before this topic?
How can I practice it?
Is Divide and Conquer hard to learn?
How long does it take to learn Divide and Conquer?
Which topics are related to Divide and Conquer?
What should I study after Divide and Conquer?
Related topics
- Timsort (Algorithms)
- Master Theorem (Algorithms)
- Bucket Sort (Algorithms)
- Greedy Algorithms (Algorithms)