Skip to content

Latest commit

 

History

History
39 lines (25 loc) · 1.78 KB

part04-algorithmic-toolbox.asc

File metadata and controls

39 lines (25 loc) · 1.78 KB

Algorithmic Toolbox

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.

We are going to discuss the following techniques for solving algorithms problems:
  • [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).