{"product_id":"data-structures-and-algorithms-in-python-hardback-9781118290279","title":"Data Structures and Algorithms in Python (Hardback) 9781118290279","description":"\u003cfont face=\"Georgia\"\u003e\r\n\u003cp\u003e\u003cfont size=\"6\"\u003eData Structures and Algorithms in Python\u003c\/font\u003e\u003cbr\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003c\/p\u003e\n\u003cp\u003e\u003cfont size=\"4\"\u003eMichael T. Goodrich (Author), Roberto Tamassia (Author), Michael H. Goldwasser (Author)\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e9781118290279, Wiley\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eHardback, published 5 July 2013\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e768 pages\u003cbr\u003e24.1 x 19.6 x 3.3 cm, 1.27 kg\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003cp align=\"justify\"\u003e\u003cstrong\u003e\u003cfont size=\"3\"\u003e\u003cp\u003eBased on the authors' market leading data structures books in Java and C++, this textbook offers a comprehensive, definitive introduction to data structures in Python by respected authors. \u003cb\u003e\u003ci\u003eData Structures and Algorithms in Python\u003c\/i\u003e\u003c\/b\u003e is the first mainstream object-oriented book available for the Python data structures course.  Designed to provide a comprehensive introduction to data structures and algorithms, including their design, analysis, and implementation, the text will maintain the same general structure as \u003ci\u003eData Structures and Algorithms in Java\u003c\/i\u003e and \u003ci\u003eData Structures and Algorithms in C++.\u003c\/i\u003e\u003c\/p\u003e\u003c\/font\u003e\u003c\/strong\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e\u003cp\u003ePreface v\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Python Primer 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 Python Overview 2\u003c\/p\u003e \u003cp\u003e1.2 Objects in Python 4\u003c\/p\u003e \u003cp\u003e1.3 Expressions, Operators, and Precedence 12\u003c\/p\u003e \u003cp\u003e1.4 Control Flow 18\u003c\/p\u003e \u003cp\u003e1.5 Functions 23\u003c\/p\u003e \u003cp\u003e1.6 Simple Input and Output 30\u003c\/p\u003e \u003cp\u003e1.7 Exception Handling 33\u003c\/p\u003e \u003cp\u003e1.8 Iterators and Generators 39\u003c\/p\u003e \u003cp\u003e1.9 Additional Python Conveniences 42\u003c\/p\u003e \u003cp\u003e1.10 Scopes and Namespaces 46\u003c\/p\u003e \u003cp\u003e1.11 Modules and the Import Statement 48\u003c\/p\u003e \u003cp\u003e1.12 Exercises 51\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Object-Oriented Programming 56\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Goals, Principles, and Patterns 57\u003c\/p\u003e \u003cp\u003e2.2 Software Development 62\u003c\/p\u003e \u003cp\u003e2.3 Class Definitions 69\u003c\/p\u003e \u003cp\u003e2.4 Inheritance 82\u003c\/p\u003e \u003cp\u003e2.5 Namespaces and Object-Orientation 96\u003c\/p\u003e \u003cp\u003e2.6 Shallow and Deep Copying101\u003c\/p\u003e \u003cp\u003e2.7 Exercises 103\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Algorithm Analysis 109\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Experimental Studies 111\u003c\/p\u003e \u003cp\u003e3.1.1 Moving Beyond Experimental Analysis 113\u003c\/p\u003e \u003cp\u003e3.2 The Seven Functions Used in This Book 115\u003c\/p\u003e \u003cp\u003e3.3 Asymptotic Analysis 123\u003c\/p\u003e \u003cp\u003e3.4 Simple Justification Techniques 137\u003c\/p\u003e \u003cp\u003e3.5 Exercises 141\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Recursion 148\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 Illustrative Examples 150\u003c\/p\u003e \u003cp\u003e4.2 Analyzing Recursive Algorithms 161\u003c\/p\u003e \u003cp\u003e4.3 Recursion Run Amok 165\u003c\/p\u003e \u003cp\u003e4.4 Further Examples of Recursion 169\u003c\/p\u003e \u003cp\u003e4.5 Designing Recursive Algorithms 177\u003c\/p\u003e \u003cp\u003e4.6 Eliminating Tail Recursion 178\u003c\/p\u003e \u003cp\u003e4.7 Exercises 180\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Array-Based Sequences 183\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Python’s Sequence Types 184\u003c\/p\u003e \u003cp\u003e5.2 Low-Level Arrays 185\u003c\/p\u003e \u003cp\u003e5.3 Dynamic Arrays and Amortization 192\u003c\/p\u003e \u003cp\u003e5.4 Efficiency of Python's Sequence Types 202\u003c\/p\u003e \u003cp\u003e5.5 Using Array-Based Sequences 210\u003c\/p\u003e \u003cp\u003e5.6 Multidimensional Data Sets 219\u003c\/p\u003e \u003cp\u003e5.7 Exercises 224\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Stacks, Queues, and Deques 228\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Stacks 229\u003c\/p\u003e \u003cp\u003e6.2 Queues 239\u003c\/p\u003e \u003cp\u003e6.3 Double-Ended Queues 247\u003c\/p\u003e \u003cp\u003e6.4 Exercises 250\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Linked Lists 255\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Singly Linked Lists 256\u003c\/p\u003e \u003cp\u003e7.2 Circularly Linked Lists 266\u003c\/p\u003e \u003cp\u003e7.3 Doubly Linked Lists 270\u003c\/p\u003e \u003cp\u003e7.4 The Positional List ADT 277\u003c\/p\u003e \u003cp\u003e7.5 Sorting a Positional List 285\u003c\/p\u003e \u003cp\u003e7.6 Case Study: Maintaining Access Frequencies 286\u003c\/p\u003e \u003cp\u003e7.7 Link-Based vs Array-Based Sequences 292\u003c\/p\u003e \u003cp\u003e7.8 Exercises 294\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Trees 299\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 General Trees 300\u003c\/p\u003e \u003cp\u003e8.2 Binary Trees 311\u003c\/p\u003e \u003cp\u003e8.3 Implementing Trees 317\u003c\/p\u003e \u003cp\u003e8.4 Tree Traversal Algorithms 328\u003c\/p\u003e \u003cp\u003e8.5 Case Study: An Expression Tree 348\u003c\/p\u003e \u003cp\u003e8.6 Exercises 352\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Priority Queues 362\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 The Priority Queue Abstract Data Type 363\u003c\/p\u003e \u003cp\u003e9.2 Implementing a Priority Queue 365\u003c\/p\u003e \u003cp\u003e9.3 Heaps 370\u003c\/p\u003e \u003cp\u003e9.4 Sorting with a Priority Queue 385\u003c\/p\u003e \u003cp\u003e9.5 Adaptable Priority Queues 390\u003c\/p\u003e \u003cp\u003e9.6 Exercises 395\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Maps, Hash Tables, and Skip Lists 401\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Maps and Dictionaries 402\u003c\/p\u003e \u003cp\u003e10.2 Hash Tables 410\u003c\/p\u003e \u003cp\u003e10.3 Sorted Maps 427\u003c\/p\u003e \u003cp\u003e10.4 Skip Lists 437\u003c\/p\u003e \u003cp\u003e10.5 Sets, Multisets, and Multimaps 446\u003c\/p\u003e \u003cp\u003e10.6 Exercises 452\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Search Trees 459\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Binary Search Trees 460\u003c\/p\u003e \u003cp\u003e11.2 Balanced Search Trees 475\u003c\/p\u003e \u003cp\u003e11.2.1 Python Framework for Balancing Search Trees 478\u003c\/p\u003e \u003cp\u003e11.3 AVL Trees 481\u003c\/p\u003e \u003cp\u003e11.4 Splay Trees 490\u003c\/p\u003e \u003cp\u003e11.5 (2,4) Trees 502\u003c\/p\u003e \u003cp\u003e11.6 Red-Black Trees 512\u003c\/p\u003e \u003cp\u003e11.7 Exercises 528\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Sorting and Selection 536\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 Why Study Sorting Algorithms? 537\u003c\/p\u003e \u003cp\u003e12.2 Merge-Sort 538\u003c\/p\u003e \u003cp\u003e12.3 Quick-Sort 550\u003c\/p\u003e \u003cp\u003e12.4 Studying Sorting through an Algorithmic Lens 562\u003c\/p\u003e \u003cp\u003e12.5 Comparing Sorting Algorithms567\u003c\/p\u003e \u003cp\u003e12.6 Python's Built-In Sorting Functions 569\u003c\/p\u003e \u003cp\u003e12.7 Selection 571\u003c\/p\u003e \u003cp\u003e12.8 Exercises 574\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Text Processing 581\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e13.1 Abundance of Digitized Text 582\u003c\/p\u003e \u003cp\u003e13.2 Pattern-Matching Algorithms 584\u003c\/p\u003e \u003cp\u003e13.3 Dynamic Programming 594\u003c\/p\u003e \u003cp\u003e13.4 Text Compression and the Greedy Method 601\u003c\/p\u003e \u003cp\u003e13.5 Tries 604\u003c\/p\u003e \u003cp\u003e13.6 Exercises 613\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14 Graph Algorithms 619\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e14.1 Graphs 620\u003c\/p\u003e \u003cp\u003e14.2 Data Structures for Graphs627\u003c\/p\u003e \u003cp\u003e14.3 Graph Traversals 638\u003c\/p\u003e \u003cp\u003e14.4 Transitive Closure 651\u003c\/p\u003e \u003cp\u003e14.5 Directed Acyclic Graphs 655\u003c\/p\u003e \u003cp\u003e14.6 Shortest Paths 659\u003c\/p\u003e \u003cp\u003e14.7 Minimum Spanning Trees 670\u003c\/p\u003e \u003cp\u003e14.8 Exercises 686\u003c\/p\u003e \u003cp\u003e\u003cb\u003e15 Memory Management and B-Trees 697\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e15.1 Memory Management 698\u003c\/p\u003e \u003cp\u003e15.2 Memory Hierarchies and Caching 705\u003c\/p\u003e \u003cp\u003e15.3 External Searching and B-Trees 711\u003c\/p\u003e \u003cp\u003e15.4 External-Memory Sorting 715\u003c\/p\u003e \u003cp\u003e15.5 Exercises 717\u003c\/p\u003e \u003cp\u003eA Character Strings in Python 721\u003c\/p\u003e \u003cp\u003eB Useful Mathematical Facts 725\u003c\/p\u003e \u003cp\u003eBibliography 732\u003c\/p\u003e \u003cp\u003eIndex 737\u003c\/p\u003e\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eSubject Areas: Computer programming \/ software development [\u003ca title=\"See our other books on Computer programming \/ software development\" href=\"https:\/\/freshlyprintedbooks.co.uk\/search?q=%22Computer%20programming%20\/%20software%20development%20%5BUM%5D%22\"\u003eUM\u003c\/a\u003e]\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\u003c\/font\u003e","brand":"Wiley","offers":[{"title":"Brand New","offer_id":52637458530584,"sku":"9781118290279","price":130.96,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0730\/2037\/5320\/files\/9781118290279.jpg?v=1788912141","url":"https:\/\/freshlyprintedbooks.co.uk\/products\/data-structures-and-algorithms-in-python-hardback-9781118290279","provider":"Freshly Printed Books","version":"1.0","type":"link"}