In this part of the book, we are going to cover examples of classical algorithms in more details. Also, we will provide algorithmic tools for improving your problem-solving skills.
Important
|
There’s not a single approach to solve all problems but knowing well-known techniques can help you build your own faster. |
We are going to start with [Sorting Algorithms] such as [insertion-sort], [merge-sort] and some others. Later, you are going to learn some algorithmic paradigms that will help you to identify common patterns and solve problems from different angles.
-
[Greedy Algorithms]: makes greedy choices using heuristics to find the best solution without looking back.
-
[Dynamic Programming]: a technique for speeding up recursive algorithms when there are many overlapping subproblems. It uses memoization to avoid duplicating work.
-
[Divide and Conquer]: divide problems into smaller pieces, conquer each subproblem and then join the results.
-
[Backtracking]: search all (or some) possible paths. However, it stops and go back as soon as notice the current solution is not working.
-
Brute Force: generate all possible solutions and tries all of them. (Use it as a last resort or as the starting point to optimize it with other techniques).