Problem
1. Implement the randomized quick-sort and quick-select algorithms, and design a series of experiments to test their relative speeds.
2. Implement an extended set ADT that includes the methods union(B), intersect(B), subtract(B), size(), isEmpty(), plus the methods equals(B), contains(e), insert(e), and remove(e) with obvious meaning.
3. Implement the tree-based union/find partition data structure with both the union-by-size and path-compression heuristics.