In this part of the book, we will cover examples of classical algorithms in more detail. Also, we will provide algorithmic tools for improving your problem-solving skills.
Important
|
There’s no 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 will learn some algorithmic paradigms that will help you 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-chap]: 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 and to later optimize it).