1.1 Data Structures
1.2 Introduction to Algorithms
1.3 Relation between data structures and algorithms
1.4 Abstract data types
1.6 Algorithm efficiency

2.1 Searching and algorithms
2.2 Binary search
2.3 Constant time operations
2.4 Growth of functions and complexity
2.5 O notation
2.6 Algorithm analysis
2.7 Recursive definitions
2.8 Recursive algorithms
2.9 Analyzing the time complexity of recursive algorithms

3.1 Sorting: Introduction
3.2 Selection sort
3.3 Insertion sort
3.4 Shell sort
3.5 Quicksort
3.6 Merge sort
3.8 Overview of fast sorting algorithms

4.1 List abstract data type (ADT)
4.13 Array-based lists

5.1 Stack abstract data type (ADT)
5.3 Array-based stacks
5.4 Queue abstract data type (ADT)
5.6 Array-based queues
5.7 Deque abstract data type (ADT)

6.1 Hash tables
6.2 Chaining
6.3 Linear probing
6.5 Double hashing
6.6 Hash table resizing
6.7 Common hash functions
6.8 Direct hashing
6.9 Hashing Algorithms: Cryptography, Password Hashing

7.1 Binary trees
7.2 Applications of trees
7.3 Binary search trees
7.4 BST search algorithm
7.5 BST insert algorithm
7.6 BST remove algorithm
7.7 BST inorder traversal
7.8 BST height and insertion order
7.9 BST parent node pointers
7.10 BST: Recursion
7.11 Tries

8.1 AVL: A balanced tree
8.2 AVL rotations
8.3 AVL insertions
8.4 AVL removals
8.5 Red-black tree: A balanced tree
8.6 Red-black tree: Rotations
8.7 Red-black tree: Insertion
8.8 Red-black tree: Removal

9.1 Heaps
9.2 Heaps using arrays
9.3 Heap sort
9.4 Priority queue abstract data type (ADT)
9.5 Treaps

10.1 Set abstract data type
10.2 Set operations
10.3 Static and dynamic set operations

11.1 Graphs: Introduction
11.2 Applications of graphs
11.6 Graphs: Depth-first search
11.7 Directed graphs
11.8 Weighted graphs
11.9 Algorithm: Dijkstra’s shortest path
11.10 Algorithm: Bellman-Ford’s shortest path
11.11 Topological sort
11.12 Minimum spanning tree
11.13 All pairs shortest path

12.1 Huffman compression
12.2 Heuristics
12.3 Greedy algorithms
12.4 Dynamic programming

13.1 B-trees
13.2 2-3-4 tree search algorithm
13.3 2-3-4 tree insert algorithm
13.4 2-3-4 tree rotations and fusion
13.5 2-3-4 tree removal

14.1 Bubble sort
14.2 Quickselect
14.3 Bucket sort
14.4 List data structure
14.5 Circular lists

## What You’ll Find In This zyBook:

### More action with less text.

• Emphasizes essential data structures and algorithms
• Animations and tools are an excellent match for teaching data structures
• Language-independent pseudocode for data structures to ensure mastery of the fundamental concepts
• This zyBook also features highly visual content, bringing the world of data structures to life

## The zyBooks Approach

### Less text doesn’t mean less learning.

Provides an introduction to the basics of algorithms and data structures, illustrating the “science” of computing. Mastery of these concepts is part of the foundation of the discipline of computing, leading to computing professionals as distinct from programmers. This zyBook uses pseudocode to ensure the reader masters the fundamental concepts that apply to all programming languages. This zyBook is well suited for a first course in data structures and algorithms.

## Authors

Roman Lysecky
Professor of Electrical and Computer Engineering, Univ. of Arizona

Frank Vahid
Professor of Computer Science and Engineering, Univ. of California, Riverside

Evan Olds
Content Developer, zyBooks