• All Midterm Concepts
    • add "heap" and "graph" to the Data Structures bullet

  • Heaps
    • heap order property
    • array-based implementation
    • propagate-up/down operations
    • insertion, deletion, buildheap
    • applications: resource scheduling; simulations

  • Selection
    • List, Tree, Heap-based selection
    • Quickselect

  • Sorting
    • inversions, adjacent swaps
    • For each sorting algorithm: Insertion Sort, Heapsort, Shellsort, Mergesort, Quicksort, Bucketsort...
      • How they work
      • Running times: best, worst, average
      • Best/worst case inputs

  • Graphs
    • terminology (directed, weighted, path, cycle, etc.)
    • adjacency matrix vs. adjacency list implementations
    • breadth-first, depth-first traversals
    • topological orderings
    • shortest path problem (Dijkstra's algorithm)
    • minimum spanning tree problem (Kruskal's/Prim's algorithms)

  • Algorithm Classification
    • greedy algorithms
    • divide-and-conquer algorithms
    • intractable problems
    • P and NP problems