50 Algorithms Every Programmer Should Know

bf-book-cover

Metadata

Authors: Imran Ahmad Tags: algorithms_and_data_structures coding_interview computational_thinking deep_learning grokking_algorithms language_models machine_learning_python python_algorithms python_book python_data_science self-taught_programmer sequential_models Lists: Currently Reading Book URL: https://reader.bookfusion.com/books/6075850-50-algorithms-every-programmer-should-know?type=epub_reflowable Date Added: 2025-05-25 23:06:05 UTC Last Updated: 2025-05-29 20:16:38 UTC Progress: 6.72%


Highlights & Notes

The phases of an algorithm

50 Algorithms Every Programmer Should Know

Date Created: 2025-05-29 19:47:47 UTC Color: 79CF76 ■

The requirements of the business problem can be divided into functional and non-functional requirements. The requirements that directly specifies the expected features of the solutions are called the functional requirements. Functional requirements detail the expected behavior of the solution. On the other hand, the non-functional requirements are about the performance, scalability, usability

View highlight

Algorithm design techniques

50 Algorithms Every Programmer Should Know

Date Created: 2025-05-29 19:58:58 UTC Color: 79CF76 ■

algorithm, we keep the following three design concerns in mind as we work on designing and fine-tuning the algorithms:

  • Concern 1: Is this algorithm producing the result we expected?

  • Concern 2: Is this the most optimal way to get these results?

  • Concern 3: How is the algorithm going to perform on larger datasets?

View highlight

50 Algorithms Every Programmer Should Know

Date Created: 2025-05-29 20:02:35 UTC Color: 79CF76 ■

To characterize the problem in terms of its complexity and needs, it helps if we study its data and compute dimensions in more depth, which we will do in the following section.

The data dimension

To categorize the data dimension of the problem, we look at its volume, velocity, and variety (the 3Vs), which are defined as follows:

  • Volume: The volume is the expected size of the data that the algorithm will process.

  • Velocity: The velocity is the expected rate of new data generation when the algorithm is used. It can be zero.

  • Variety: The variety quantifies how many different types of data the designed algorithm is expected to deal with.

View highlight

Performance analysis

50 Algorithms Every Programmer Should Know

Date Created: 2025-05-29 20:08:39 UTC Color: 79CF76 ■

To be useful, any algorithm should have three key features:

  • Should be Correct: A good algorithm should produce the correct result. To confirm that an algorithm is working correctly, it needs to be extensively tested, especially testing edge cases.

  • Should be Understandable: A good algorithm should be understandable. The best algorithm in the world is not very useful if it’s too complicated for us to implement on a computer.

  • Should be Efficient: A good algorithm should be efficient. Even if an algorithm produces a correct result, it won’t help us much if it takes a thousand years or if it requires 1 billion terabytes of memory.

View highlight

Space complexity analysis

50 Algorithms Every Programmer Should Know

Date Created: 2025-05-29 20:14:05 UTC Color: 79CF76 ■

Space complexity analysis estimates the amount of memory required by the algorithm to process input data.

View highlight