Problem Solving with Algorithms and Data Structures.pdf

(4254 KB) Pobierz
Problem Solving with Algorithms and
Data Structures
Release 3.0
Brad Miller, David Ranum
September 22, 2013
CONTENTS
1
Introduction
1.1 Objectives
. . . . . . . . .
1.2 Getting Started
. . . . . . .
1.3 What Is Computer Science?
1.4 Review of Basic Python
. .
1.5 Summary
. . . . . . . . . .
1.6 Key Terms
. . . . . . . . .
1.7 Programming Exercises
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
4
8
38
38
38
41
41
41
52
59
59
59
60
61
61
61
62
64
82
94
97
98
98
108
111
112
112
113
2
Algorithm Analysis
2.1 Objectives
. . . . . . . . . . . . . . .
2.2 What Is Algorithm Analysis?
. . . . .
2.3 Performance of Python Data Structures
2.4 Summary
. . . . . . . . . . . . . . . .
2.5 Key Terms
. . . . . . . . . . . . . . .
2.6 Discussion Questions
. . . . . . . . . .
2.7 Programming Exercises
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
Basic Data Structures
3.1 Objectives
. . . . . . . . . . . . . . . . . . .
3.2 What Are Linear Structures?
. . . . . . . . . .
3.3 Stacks
. . . . . . . . . . . . . . . . . . . . . .
3.4 The Stack Abstract Data Type
. . . . . . . . .
3.5 Queues
. . . . . . . . . . . . . . . . . . . . .
3.6 Deques
. . . . . . . . . . . . . . . . . . . . .
3.7 Lists
. . . . . . . . . . . . . . . . . . . . . .
3.8 The Unordered List Abstract Data Type
. . . .
3.9 Implementing an Unordered List: Linked Lists
3.10 The Ordered List Abstract Data Type
. . . . .
3.11 Summary
. . . . . . . . . . . . . . . . . . . .
3.12 Key Terms
. . . . . . . . . . . . . . . . . . .
3.13 Discussion Questions
. . . . . . . . . . . . . .
3.14 Programming Exercises
. . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
Recursion
117
4.1 Objectives
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.2 What is Recursion?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
i
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
5
Stack Frames: Implementing Recursion
Visualising Recursion
. . . . . . . . .
Complex Recursive Problems
. . . . .
Exploring a Maze
. . . . . . . . . . .
Summary
. . . . . . . . . . . . . . . .
Key Terms
. . . . . . . . . . . . . . .
Discussion Questions
. . . . . . . . . .
Programming Exercises
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
123
125
133
135
144
145
145
145
147
147
147
163
181
182
182
183
185
185
185
188
190
198
206
212
215
231
232
232
233
Sorting and Searching
5.1 Objectives
. . . . . . .
5.2 Searching
. . . . . . . .
5.3 Sorting
. . . . . . . . .
5.4 Summary
. . . . . . . .
5.5 Key Terms
. . . . . . .
5.6 Discussion Questions
. .
5.7 Programming Exercises
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
Trees and Tree Algorithms
6.1 Objectives
. . . . . . . . . . . . .
6.2 Examples Of Trees
. . . . . . . . .
6.3 Vocabulary and Definitions
. . . .
6.4 Implementation
. . . . . . . . . . .
6.5 Priority Queues with Binary Heaps
6.6 Binary Tree Applications
. . . . . .
6.7 Tree Traversals
. . . . . . . . . . .
6.8 Binary Search Trees
. . . . . . . .
6.9 Summary
. . . . . . . . . . . . . .
6.10 Key Terms
. . . . . . . . . . . . .
6.11 Discussion Questions
. . . . . . . .
6.12 Programming Exercises
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
JSON
235
7.1 Objectives
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
7.2 What is JSON?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
7.3 The JSON Syntax
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
ii
Problem Solving with Algorithms and Data Structures, Release 3.0
CONTENTS
1
Zgłoś jeśli naruszono regulamin