#### Overview of this book

Choosing the right data structure is pivotal to optimizing the performance and scalability of applications. This new edition of Hands-On Data Structures and Algorithms with Python will expand your understanding of key structures, including stacks, queues, and lists, and also show you how to apply priority queues and heaps in applications. You’ll learn how to analyze and compare Python algorithms, and understand which algorithms should be used for a problem based on running time and computational complexity. You will also become confident organizing your code in a manageable, consistent, and scalable way, which will boost your productivity as a Python developer. By the end of this Python book, you’ll be able to manipulate the most important data structures and algorithms to more efficiently store, organize, and access data in your applications.
Preface
Free Chapter
Python Data Types and Structures
Introduction to Algorithm Design
Algorithm Design Techniques and Strategies
Stacks and Queues
Trees
Heaps and Priority Queues
Hash Tables
Graphs and Algorithms
Searching
Sorting
Selection Algorithms
String Matching Algorithms
Other Books You May Enjoy
Index

# Index

A

algorithm 35

benefits 36

criteria 36, 37

example 37

performance analysis 37, 38

running time complexity, computing 52, 53, 54

algorithm design techniques 57, 58

divide-and-conquer 60, 61

dynamic programming 68, 69

greedy algorithms 74, 75, 76

recursion 59, 60

algorithms 1

amortized analysis 49

accounting method 50

aggregate analysis 50

potential method 50

Anaconda distribution

AND operator 17

arithmetic expression 194

infix notation 194

postfix notation 194, 196

prefix notation 194, 195

arrays 94, 248

used, for implementing stacks 145, 146, 147

asymptotic notation 41

Big O notation 44, 45, 46, 47

for calculating running time complexity 42

omega notation 47, 48, 49

theta notation 42, 43, 44

B

balanced binary tree 184