In the previous chapter, we learned about hash tables and binary search trees. In this chapter, we will explore algorithm design paradigms. These design patterns can be seen as the generic methods or approaches that motivate the design of a class of algorithms.
Just as an algorithm is a higher abstraction than a computer program, an algorithm design paradigm is an abstraction higher than an algorithm. The choice of an algorithm paradigm is an important one when designing an algorithm.
This chapter will focus on the following three algorithm paradigms:
- Greedy
- Divide and conquer
- Dynamic programming
By becoming familiar with these higher abstractions, you can make more informed decisions when designing algorithms.
In a previous chapter, we have come across the merge sort and quick sort algorithms, which are examples of the...