CS 315: Algorithms & Data Structures: Lecture Notes


Copyright © 2009 by Gordon S. Novak Jr.

Permission is granted for individuals to make copies of these notes for personal use, or for instructors to make copies for classroom use.

Note: Some of these pages use math symbols. Microsoft Internet Explorer will not display the math symbols, but Firefox will.

Contents

a* 227

abstract syntax tree 94, 160

acyclic 206

adjacency list 210

adjacency matrix 211

adjacent 210

alist 63, 147

amortize 23

arc 206

array 67

array performance 196

assoc 63, 147

association list 63, 147

associative 236

ast 94, 160

avl tree 138

b tree 140

backtrack 120

bag 161

balanced tree 137

base case 33, 34

big o 11

bijective 233

binary heap 182

binary tree 137

binding 147

binding list 147

boolean matrix 211

boxed integer 26

branching factor 120

bucket 173

cache 176, 195

cambridge polish 131

cartesian product 206

child 92

circular queue 81

circularly linked list 50

clustering 167

collection 83, 161

collision 172

commutative 236

comparator 189

comparison 189

complete 182

complexity 11

critical path 215

cycle 206

dag 208

dense 209

depth-first search 120

deque 89

design pattern 35, 114

destructive 44

dfs 120

digraph 208

dijkstra algorithm 218

directed 208

directed acyclic graph 208

divide and conquer 56

divide-and-conquer 198

domain 162, 233

doubly linked list 50

edge 206

efficiency 11

emit 245

equal 151

euclidean distance 242

exclusive or 168

extendible hashing 177

external sort 188

fair 79

fifo 79

filter 85

functional program 235

garbage 27

geometric series 179

grammar 77

graph 206

greedy 218

half-adder 168

hash function 166

hash with buckets 173

hashing 166

hashset 161

heapsort 192

heuristic 225

heuristic function 227

hill climbing 226

immutable 27

in-place 191

infinite loop 33

infix 131

injective 233

inorder 131

insertion sort 190

interior node 92

internal sort 188

intersection 48

inversion 191

isomorphism 237

language translation 158

leaf 92

lifo 64

linear probing 172

link 28, 92, 206

linked list 28

load factor 172

local maximum 226

map 162

mapcar 238

mapping 233, 238

mapreduce 243

matching 154

member 47

memoization 178

memory hierarchy 195

memory locality 194, 195

merge 51

merge sort 193

minimum spanning tree 221

node 206

null dereference 64

object 26

on-line 191

one-to-one 233

onto 233

ontology 99

optimization 158

order 12

parse tree 95

parsing 160

partition 198

path 206

pattern matching 154

pattern-pair 157

percolate 184

performance 11

pert chart 215

pivot 198

pointer 26

polish 131

pop 64

postfix 131

predicate 47

prims algorithm 222

priority queue 180

push 64

queue 79

quicksort 198

radix sort 203

random access 23, 67

randomization 179

range 162, 233

record 26

recursion 33

recursive case 34

red-black tree 137

reduce 241

reference 26

reference type 26

rehash 172, 175

root 92

routing 217

row-major order 197

runtime stack 70

search 120

self balancing tree 137

sentinel 65

separate chaining 173

set 47, 161

set difference 49

shadow 71

shortest path 217

side effect 65

side-effect 235

simple path 206

simulation 237

sorting 188

sparse 144, 209, 210

splay tree 137

stable 191

stack 64

stack frame 70

state 120

structure sharing 44

substitution 148

surjective 233

symbol table 178

symmetric 211

syntax 77

tail recursive 38

taxonomy 98

topological sort 213

transform 157, 160

transformation 158

tree 92

tree recursion 114

tree rotation 139

treeset 161

undirected 208

union 49

unparsing 160

vertex 206

well-founded ordering 33

xml 78

xor 168


CS 315