Topics to be covered on test: Preliminaries: (Siegel and Cole, chapters 1 and 2) Order of magnitude comparison Asymptotic analysis of worst-case running time. Constructing and solving recurrence equations for running time of recursive functions Sorting: Insertion sort (S&C 5.1.2 Selection sort (S&C 5.1.3) Mergesort (S&C 5.2.1) Heapsort (S&C 5.2.2) Quicksort (S&C 5.2.4 p. 116. You are not responsible for Siegel's material on "programming in the small", though it is very well worth reading.) Lower bounds on comparison sorts (S&C 5.3) Bucket sort (S&C 5.4.3) Radix sort (S&C 5.4.4) Abstract data types: (S&C 3.1) Tree traversal (S&C 3.4) Search trees (S&C 6.1) 2-3 trees (S&C 6.5) Hash tables (S&C 6.8) Directed Graphs Depth-first search (S&C 7.1 -- 7.4) DAGS. Topological sort. (S&C 7.5) Shortest path algorithms: (S&C chap 8 through 8.2.2) Dijkstra's algorithm Floyd's algorithm Undirected Graphs Minimum spanning tree algorithms (S&C 8.4) Prim's algorithm Kruskal's algorithm Merge-Find sets (also called Union-Find) (S&C 9.5) Algorithm design Greedy algorithms (S&C 11.4) Divide and conquer algorithms (S&C 11.2) Dynamic programming (S&C 11.3)