Книга: A Common-Sense Guide to Data Structures and Algorithms in Python, Volume 2 (for True Epub)
Назад: Wrapping Up
Дальше: Exercises

Parting Thoughts

Congratulations—you’ve leveled up! It’s been quite a journey, and you’ve learned many ideas that you can take to the bank.

Understanding the limitations of Big O Notation and how to benchmark time and space are critical to ensuring that your algorithms are truly efficient.

Randomization and Monte Carlo play an important role in thoughtful algorithm design. External-memory algorithms and caching are both important components of good system design.

Data structures such as red-black trees and randomized treaps make sure that when you need a tree, it’s fast. Bit vectors and Bloom filters, on the other hand, offer tremendous space savings.

Sure, I can spell out a list of other things you’ve learned, such as bit manipulation, the sliding-window technique, substring search, Mergesort, B-trees, and random hashing. However, above all, you’ve upgraded the way you think. You’re a more adept software engineer, able to thoughtfully consider the various implications of each code implementation. You understand the pros and cons of each data structure and the advantages and disadvantages of various algorithms that all vie to solve the same problem.

And yet, your journey is still not over. There are many algorithms and data structures yet to learn, and efficiency-producing techniques and tricks that you have not yet encountered. As our computing problems get ever more complex, new solutions are constantly being developed, and others are yet to be discovered.

Your growth as a software engineer must continue! Whether it’s through my own future writing or through your own research, I wish you the best of luck as you progress along your journey.

Назад: Wrapping Up
Дальше: Exercises