Data Structures and Algorithms in Python

Höfundur Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser

Útgefandi Wiley Global Education US

Snið Page Fidelity

Print ISBN 9781118290279

Útgáfa 1

Útgáfuár 2013

6.890 kr.

Description

Efnisyfirlit

  • Title Page
  • Copyright Page
  • Preface
  • Contents
  • 1 Python Primer
  • 1.1 Python Overview
  • 1.1.1 The Python Interpreter
  • 1.1.2 Preview of a Python Program
  • 1.2 Objects in Python
  • 1.2.1 Identifiers, Objects, and the Assignment Statement
  • 1.2.2 Creating and Using Objects
  • 1.2.3 Python’s Built-In Classes
  • 1.3 Expressions, Operators, and Precedence
  • 1.3.1 Compound Expressions and Operator Precedence
  • 1.4 Control Flow
  • 1.4.1 Conditionals
  • 1.4.2 Loops
  • 1.5 Functions
  • 1.5.1 Information Passing
  • 1.5.2 Python’s Built-In Functions
  • 1.6 Simple Input and Output
  • 1.6.1 Console Input and Output
  • 1.6.2 Files
  • 1.7 Exception Handling
  • 1.7.1 Raising an Exception
  • 1.7.2 Catching an Exception
  • 1.8 Iterators and Generators
  • 1.9 Additional Python Conveniences
  • 1.9.1 Conditional Expressions
  • 1.9.2 Comprehension Syntax
  • 1.9.3 Packing and Unpacking of Sequences
  • 1.10 Scopes and Namespaces
  • 1.11 Modules and the Import Statement
  • 1.11.1 Existing Modules
  • 1.12 Exercises
  • 2 Object-Oriented Programming
  • 2.1 Goals, Principles, and Patterns
  • 2.1.1 Object-Oriented Design Goals
  • 2.1.2 Object-Oriented Design Principles
  • 2.1.3 Design Patterns
  • 2.2 Software Development
  • 2.2.1 Design
  • 2.2.2 Pseudo-Code
  • 2.2.3 Coding Style and Documentation
  • 2.2.4 Testing and Debugging
  • 2.3 Class Definitions
  • 2.3.1 Example: CreditCard Class
  • 2.3.2 Operator Overloading and Python’s Special Methods
  • 2.3.3 Example: Multidimensional Vector Class
  • 2.3.4 Iterators
  • 2.3.5 Example: Range Class
  • 2.4 Inheritance
  • 2.4.1 Extending the CreditCard Class
  • 2.4.2 Hierarchy of Numeric Progressions
  • 2.4.3 Abstract Base Classes
  • 2.5 Namespaces and Object-Orientation
  • 2.5.1 Instance and Class Namespaces
  • 2.5.2 Name Resolution and Dynamic Dispatch
  • 2.6 Shallow and Deep Copying
  • 2.7 Exercises
  • 3 Algorithm Analysis
  • 3.1 Experimental Studies
  • 3.1.1 Moving Beyond Experimental Analysis
  • 3.2 The Seven Functions Used in This Book
  • 3.2.1 Comparing Growth Rates
  • 3.3 Asymptotic Analysis
  • 3.3.1 The “Big-Oh” Notation
  • 3.3.2 Comparative Analysis
  • 3.3.3 Examples of Algorithm Analysis
  • 3.4 Simple Justification Techniques
  • 3.4.1 By Example
  • 3.4.2 The “Contra” Attack
  • 3.4.3 Induction and Loop Invariants
  • 3.5 Exercises
  • 4 Recursion
  • 4.1 Illustrative Examples
  • 4.1.1 The Factorial Function
  • 4.1.2 Drawing an English Ruler
  • 4.1.3 Binary Search
  • 4.1.4 File Systems
  • 4.2 Analyzing Recursive Algorithms
  • 4.3 Recursion Run Amok
  • 4.3.1 Maximum Recursive Depth in Python
  • 4.4 Further Examples of Recursion
  • 4.4.1 Linear Recursion
  • 4.4.2 Binary Recursion
  • 4.4.3 Multiple Recursion
  • 4.5 Designing Recursive Algorithms
  • 4.6 Eliminating Tail Recursion
  • 4.7 Exercises
  • 5 Array-Based Sequences
  • 5.1 Python’s Sequence Types
  • 5.2 Low-Level Arrays
  • 5.2.1 Referential Arrays
  • 5.2.2 Compact Arrays in Python
  • 5.3 Dynamic Arrays and Amortization
  • 5.3.1 Implementing a Dynamic Array
  • 5.3.2 Amortized Analysis of Dynamic Arrays
  • 5.3.3 Python’s List Class
  • 5.4 Efficiency of Python’s Sequence Types
  • 5.4.1 Python’s List and Tuple Classes
  • 5.4.2 Python’s String Class
  • 5.5 Using Array-Based Sequences
  • 5.5.1 Storing High Scores for a Game
  • 5.5.2 Sorting a Sequence
  • 5.5.3 Simple Cryptography
  • 5.6 Multidimensional Data Sets
  • 5.7 Exercises
  • 6 Stacks, Queues, and Deques
  • 6.1 Stacks
  • 6.1.1 The Stack Abstract Data Type
  • 6.1.2 Simple Array-Based Stack Implementation
  • 6.1.3 Reversing Data Using a Stack
  • 6.1.4 Matching Parentheses and HTML Tags
  • 6.2 Queues
  • 6.2.1 The Queue Abstract Data Type
  • 6.2.2 Array-Based Queue Implementation
  • 6.3 Double-Ended Queues
  • 6.3.1 The Deque Abstract Data Type
  • 6.3.2 Implementing a Deque with a Circular Array
  • 6.3.3 Deques in the Python Collections Module
  • 6.4 Exercises
  • 7 Linked Lists
  • 7.1 Singly Linked Lists
  • 7.1.1 Implementing a Stack with a Singly Linked List
  • 7.1.2 Implementing a Queue with a Singly Linked List
  • 7.2 Circularly Linked Lists
  • 7.2.1 Round-Robin Schedulers
  • 7.2.2 Implementing a Queue with a Circularly Linked List
  • 7.3 Doubly Linked Lists
  • 7.3.1 Basic Implementation of a Doubly Linked List
  • 7.3.2 Implementing a Deque with a Doubly Linked List
  • 7.4 The Positional List ADT
  • 7.4.1 The Positional List Abstract Data Type
  • 7.4.2 Doubly Linked List Implementation
  • 7.5 Sorting a Positional List
  • 7.6 Case Study: Maintaining Access Frequencies
  • 7.6.1 Using a Sorted List
  • 7.6.2 Using a List with the Move-to-Front Heuristic
  • 7.7 Link-Based vs. Array-Based Sequences
  • 7.8 Exercises
  • 8 Trees
  • 8.1 General Trees
  • 8.1.1 Tree Definitions and Properties
  • 8.1.2 The Tree Abstract Data Type
  • 8.1.3 Computing Depth and Height
  • 8.2 Binary Trees
  • 8.2.1 The Binary Tree Abstract Data Type
  • 8.2.2 Properties of Binary Trees
  • 8.3 Implementing Trees
  • 8.3.1 Linked Structure for Binary Trees
  • 8.3.2 Array-Based Representation of a Binary Tree
  • 8.3.3 Linked Structure for General Trees
  • 8.4 Tree Traversal Algorithms
  • 8.4.1 Preorder and Postorder Traversals of General Trees
  • 8.4.2 Breadth-First Tree Traversal
  • 8.4.3 Inorder Traversal of a Binary Tree
  • 8.4.4 Implementing Tree Traversals in Python
  • 8.4.5 Applications of Tree Traversals
  • 8.4.6 Euler Tours and the Template Method Pattern
  • 8.5 Case Study: An Expression Tree
  • 8.6 Exercises
  • 9 Priority Queues
  • 9.1 The Priority Queue Abstract Data Type
  • 9.1.1 Priorities
  • 9.1.2 The Priority Queue ADT
  • 9.2 Implementing a Priority Queue
  • 9.2.1 The Composition Design Pattern
  • 9.2.2 Implementation with an Unsorted List
  • 9.2.3 Implementation with a Sorted List
  • 9.3 Heaps
  • 9.3.1 The Heap Data Structure
  • 9.3.2 Implementing a Priority Queue with a Heap
  • 9.3.3 Array-Based Representation of a Complete Binary Tree
  • 9.3.4 Python Heap Implementation
  • 9.3.5 Analysis of a Heap-Based Priority Queue
  • 9.3.6 Bottom-Up Heap Construction
  • 9.3.7 Python’s heapq Module
  • 9.4 Sorting with a Priority Queue
  • 9.4.1 Selection-Sort and Insertion-Sort
  • 9.4.2 Heap-Sort
  • 9.5 Adaptable Priority Queues
  • 9.5.1 Locators
  • 9.5.2 Implementing an Adaptable Priority Queue
  • 9.6 Exercises
  • 10 Maps, Hash Tables, and Skip Lists
  • 10.1 Maps and Dictionaries
  • 10.1.1 The Map ADT
  • 10.1.2 Application: Counting Word Frequencies
  • 10.1.3 Python’s MutableMapping Abstract Base Class
  • 10.1.4 Our MapBase Class
  • 10.1.5 Simple Unsorted Map Implementation
  • 10.2 Hash Tables
  • 10.2.1 Hash Functions
  • 10.2.2 Collision-Handling Schemes
  • 10.2.3 Load Factors, Rehashing, and Efficiency
  • 10.2.4 Python Hash Table Implementation
  • 10.3 Sorted Maps
  • 10.3.1 Sorted Search Tables
  • 10.3.2 Two Applications of Sorted Maps
  • 10.4 Skip Lists
  • 10.4.1 Search and Update Operations in a Skip List
  • 10.4.2 Probabilistic Analysis of Skip Lists
  • 10.5 Sets, Multisets, and Multimaps
  • 10.5.1 The Set ADT
  • 10.5.2 Python’s MutableSet Abstract Base Class
  • 10.5.3 Implementing Sets, Multisets, and Multimaps
  • 10.6 Exercises
  • 11 Search Trees
  • 11.1 Binary Search Trees
  • 11.1.1 Navigating a Binary Search Tree
  • 11.1.2 Searches
  • 11.1.3 Insertions and Deletions
  • 11.1.4 Python Implementation
  • 11.1.5 Performance of a Binary Search Tree
  • 11.2 Balanced Search Trees
  • 11.2.1 Python Framework for Balancing Search Trees
  • 11.3 AVL Trees
  • 11.3.1 Update Operations
  • 11.3.2 Python Implementation
  • 11.4 Splay Trees
  • 11.4.1 Splaying
  • 11.4.2 When to Splay
  • 11.4.3 Python Implementation
  • 11.4.4 Amortized Analysis of Splaying
  • 11.5 (2,4) Trees
  • 11.5.1 Multiway Search Trees
  • 11.5.2 (2,4)-Tree Operations
  • 11.6 Red-Black Trees
  • 11.6.1 Red-Black Tree Operations
  • 11.6.2 Python Implementation
  • 11.7 Exercises
  • 12 Sorting and Selection
  • 12.1 Why Study Sorting Algorithms?
  • 12.2 Merge-Sort
  • 12.2.1 Divide-and-Conquer
  • 12.2.2 Array-Based Implementation of Merge-Sort
  • 12.2.3 The Running Time of Merge-Sort
  • 12.2.4 Merge-Sort and Recurrence Equations
  • 12.2.5 Alternative Implementations of Merge-Sort
  • 12.3 Quick-Sort
  • 12.3.1 Randomized Quick-Sort
  • 12.3.2 Additional Optimizations for Quick-Sort
  • 12.4 Studying Sorting through an Algorithmic Lens
  • 12.4.1 Lower Bound for Sorting
  • 12.4.2 Linear-Time Sorting: Bucket-Sort and Radix-Sort
  • 12.5 Comparing Sorting Algorithms
  • 12.6 Python’s Built-In Sorting Functions
  • 12.6.1 Sorting According to a Key Function
  • 12.7 Selection
  • 12.7.1 Prune-and-Search
  • 12.7.2 Randomized Quick-Select
  • 12.7.3 Analyzing Randomized Quick-Select
  • 12.8 Exercises
  • 13 Text Processing
  • 13.1 Abundance of Digitized Text
  • 13.1.1 Notations for Strings and the Python str Class
  • 13.2 Pattern-Matching Algorithms
  • 13.2.1 Brute Force
  • 13.2.2 The Boyer-Moore Algorithm
  • 13.2.3 The Knuth-Morris-Pratt Algorithm
  • 13.3 Dynamic Programming
  • 13.3.1 Matrix Chain-Product
  • 13.3.2 DNA and Text Sequence Alignment
  • 13.4 Text Compression and the Greedy Method
  • 13.4.1 The Huffman Coding Algorithm
  • 13.4.2 The Greedy Method
  • 13.5 Tries
  • 13.5.1 Standard Tries
  • 13.5.2 Compressed Tries
  • 13.5.3 Suffix Tries
  • 13.5.4 Search Engine Indexing
  • 13.6 Exercises
  • 14 Graph Algorithms
  • 14.1 Graphs
  • 14.1.1 The Graph ADT
  • 14.2 Data Structures for Graphs
  • 14.2.1 Edge List Structure
  • 14.2.2 Adjacency List Structure
  • 14.2.3 Adjacency Map Structure
  • 14.2.4 Adjacency Matrix Structure
  • 14.2.5 Python Implementation
  • 14.3 Graph Traversals
  • 14.3.1 Depth-First Search
  • 14.3.2 DFS Implementation and Extensions
  • 14.3.3 Breadth-First Search
  • 14.4 Transitive Closure
  • 14.5 Directed Acyclic Graphs
  • 14.5.1 Topological Ordering
  • 14.6 Shortest Paths
  • 14.6.1 Weighted Graphs
  • 14.6.2 Dijkstra’s Algorithm
  • 14.7 Minimum Spanning Trees
  • 14.7.1 Prim-Jarník Algorithm
  • 14.7.2 Kruskal’s Algorithm
  • 14.7.3 Disjoint Partitions and Union-Find Structures
  • 14.8 Exercises
  • 15 Memory Management and B-Trees
  • 15.1 Memory Management
  • 15.1.1 Memory Allocation
  • 15.1.2 Garbage Collection
  • 15.1.3 Additional Memory Used by the Python Interpreter
  • 15.2 Memory Hierarchies and Caching
  • 15.2.1 Memory Systems
  • 15.2.2 Caching Strategies
  • 15.3 External Searching and B-Trees
  • 15.3.1 (a,b) Trees
  • 15.3.2 B-Trees
  • 15.4 External-Memory Sorting
  • 15.4.1 Multiway Merging
  • 15.5 Exercises
  • A Character Strings in Python
  • B Useful Mathematical Facts
  • Bibliography
  • Index
Show More

Additional information

Veldu vöru

Leiga á rafbók í 150 daga, Rafbók til eignar

Reviews

There are no reviews yet.

Be the first to review “Data Structures and Algorithms in Python”

Netfang þitt verður ekki birt. Nauðsynlegir reitir eru merktir *

Aðrar vörur

0
    0
    Karfan þín
    Karfan þín er tómAftur í búð