In this assignment, you are to finish implementing three associative data
structures: SortedTableMap
, ProbeHashMap
, and
TreeMap
. You are to test your implementations by finishing
implementation of a generic unit test for map. Last, you will run
experimentation between these and two other associative data structures:
UnsortedTableMap
and ChainHashMap
to analyze time
complexity of major operations of these structures to gain an intuitive feel for
the pros and cons of each. You will make a report of your findings.
This program may be a pair assignment. Please let the instructor know of the pairs as early as possible. There may only be more than two in extreme circumstances. Pairs will be required to do a little more, but will turn in a single report and single zip file of the code.
make
,
all of the documentation again with the command make docs
.TODO
define all necessary tasks to complete the
data structures, but there is not much hints beyond that. Each structure is
pretty much bare bones and gives no hint as to how to finish the
implementation. Some items to consider:
Docs
.
Open index.html
in your web browser of choice to see an
interactive documentation system. Please note all comments, some tell
how the functions should be implemented, what variable names mean,
etc.TestMap.java
that checks correctness of the most common use
case for an operation. Pairs: you are required to
additionally create new unit tests for edge cases.Timing.java
for your experimentation. This
should be extremely similar to the one you did in Program 1.Your report will include the objective of the assignment, brief description of your implementation, and a discussion of your results (theoretical and experimental). At a minimum your report should include the following organized into sections. Use a technical writing style and typeset your report in LaTeX. In this report, you are to design your own experiment to analyze big-oh complexity of a common map operation and discover the differences between the associative containers. Pairs: you are required to design two experiments and analyze two different operations.
O(n2)
test the following
input sizes:
21, 22, ..., 216
.
For operations which take O(n)
, O(log n)
, or
O(1)
test the following input sizes:
21, 22, ..., 223
.