**Beginning Algorithms A good understanding of algorithms, and the knowledge of when to apply them, is crucial to producing software that not only works correctly, but also performs efficiently. This is the only book to impart all this essential information-from the basics of algorithms, data structures, and performance characteristics to the specific algorithms used in development and programming tasks. Packed with detailed explanations and instructive examples, the book begins by offering you some fundamental data structures and then goes on to explain various sorting algorithms. You'll then learn efficient practices for storing and searching by way of hashing, trees, sets, and maps. The authors also share tips on optimization techniques and ways to avoid common performance pitfalls. In the end, you'll be prepared to build the algorithms and data structures most commonly encountered in day-to-day software development. **What you will learn from this book * The basics of algorithms, such as iteration and recursion * Elementary data structures such as lists, stacks, and queues * 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, and computational geometry * How to use test-driven development techniques to ensure your code works as intended * How to dramatically improve the performance of your code with hands-on techniques for profiling and optimization **Who this book is for This book is for anyone who develops applications, or is just beginning to do so, and is looking to understand algorithms and data structures. An understanding of computer programming is beneficial. Wrox Beginning guides are crafted to make learning programming languages and technologies easier than you think, providing a structured, tutorial format that will guide you through all the techniques involved.****** Link to chapters and parts......Page 0 Credits......Page 6 About the Authors......Page 8 Acknowledgments......Page 10 Contents......Page 12 Prerequisite Knowledge......Page 20 How to Use This Book......Page 21 Keep It Simple......Page 22 Employ Testing......Page 23 Be Assertive......Page 24 How It Works......Page 25 Errata......Page 26 p2p.wrox.com......Page 27 Defining Algorithms......Page 28 Understanding Complexity in Relation to Algorithms......Page 30 Understanding Big-O Notation......Page 31 Linear Time: O(N)......Page 33 Quadratic Time: O(N2)......Page 34 Factorial Time: O(N!)......Page 35 What Is Unit Testing?......Page 36 A JUnit Primer......Page 38 Summary......Page 41 2 Iteration and Recursion......Page 42 3 Lists......Page 70 4 Queues......Page 102 5 Stacks......Page 124 6 Basic Sorting......Page 142 7 Advanced Sorting......Page 172 8 Priority Queues......Page 200 9 Binary Searching......Page 226 10 Binary Search Trees......Page 252 11 Hashing......Page 292 12 Sets......Page 320 13 Maps......Page 344 14 Ternary Search Trees......Page 372 15 B-Trees......Page 402 16 String Searching......Page 422 17 String Matching......Page 442 18 Computational Geometry......Page 464 19 Pragmatic Optimization......Page 496 A Further Reading......Page 516 B Resources......Page 518 C Bibliography......Page 520 D Answers to Exercises......Page 522 Index......Page 570 where i am ......Page 1 Getting Started -- Iteration And Recursion -- String Searching -- Lists -- Queues -- Stacks -- Basic Sorting -- Advance Sorting -- Priority Queues -- Binary Searching -- Binary Search Trees -- Red-black Trees -- Hashing -- Sets -- Maps -- Computational Geometry -- Digital Search Trees -- B-trees -- Pragmatic Optimization. Simon Harris And James Ross. Programmer To Programmer--cover. Includes Bibliographical References And Index.