Beginning Algorithms A good understanding of algorithms, and the knowledge of when toapply them, is crucial to producing software that not only workscorrectly, but also performs efficiently. This is the only book toimpart all this essential information-from the basics ofalgorithms, data structures, and performance characteristics to thespecific algorithms used in development and programming tasks.
Packed with detailed explanations and instructive examples, thebook begins by offering you some fundamental data structures andthen goes on to explain various sorting algorithms. You'll thenlearn efficient practices for storing and searching by way ofhashing, trees, sets, and maps. The authors also share tips onoptimization techniques and ways to avoid common performancepitfalls. In the end, you'll be prepared to build the algorithmsand data structures most commonly encountered in day-to-daysoftware development.
What you will learn from this book
- The basics of algorithms, such as iteration and recursion
- Elementary data structures such as lists, stacks, andqueues
- Basic and advanced sorting algorithms including insertion sort,quicksort, and shell sort
- Advanced data structures such as binary trees, ternary trees,and heaps
- Algorithms for string searching, string matching, hashing, andcomputational geometry
- How to use test-driven development techniques to ensure yourcode works as intended
- How to dramatically improve the performance of your code withhands-on techniques for profiling and optimization
Who this book is for
This book is for anyone who develops applications, or is justbeginning to do so, and is looking to understand algorithms anddata structures. An understanding of computer programming isbeneficial.
Wrox Beginning guides are crafted to make learning programminglanguages and technologies easier than you think, providing astructured, tutorial format that will guide you through all thetechniques involved.
Simon Harris started writing animated sprites on a Commodore64 in primary school. After a break of many years, he taughthimself 80x86 and IBM System/370 assembler and started workingprofessionally. Since then he has moved from assembler to C, C++,and, of course, Java. He believes a fundamental understanding andappreciation of algorithms is essential to developing goodsoftware; and since starting his own company, RedHill Consulting,he has managed to make a living discussing and demonstratingsoftware development practices and techniques to anyone who willlisten.
In his more than 15 years of development experience, JamesRoss has ranged from building packaged products to largeenterprise systems to research into compilers and languages. Inrecent years, he has become a code quality fanatic and agilemethods specialist, particularly with test-driven development. Heworks as a consultant for ThoughtWorks, the world’s leadingagile software development company. He is currently leading thedevelopment of a large J2EE project in the insurance industry inMelbourne, Australia. He lives with his wife and family inMelbourne.