YCP Logo Lab 20: Benchmarking Merge, Quick, and Shell Sorts

Due: Monday, Dec 1st by 11:59 PM

Getting Started

Import CS201_Lab20.zip (File->Import...->General->Existing Projects into Workspace->Archive File). You should see a project called CS201_Lab20 in the Package Explorer.

Your Task

Benchmark the amount of time required to run Merge Sort, Quick Sort, and Shell Sort on arrays of random Integer values with 1,000,000 elements, 2,000,000 elements, etc., up to and including 10,000,000 elements.

Add your code to the main method of the Benchmark class.

Output your data points in the following form:

size,mergeSortTime,quickSortTime,shellSortTime

where size is the array size, mergeSortTime is the number of milliseconds needed to run Merge Sort, quickSortTime is the number of milliseconds needed to run Quick Sort, and shellSortTime is the number of milliseconds needed to run Shell Sort.

You will most likely need to increase the heap size in order to run the benchmark program. Right-click on Benchmark.java, choose Run As->Run Configurations..., choose the Arguments tab, and in the VM arguments box enter

-Xmx1024m

This raises the heap limit to 1,024 megabytes.

Your data should look something like the following:

1000000,1577,1256,2987
2000000,3351,2419,6773
3000000,4827,4166,9209
4000000,7114,5733,14571
5000000,9391,7567,19916
6000000,12228,8468,23995
7000000,14075,10547,24903
8000000,15398,13731,36317
9000000,19905,14858,41476
10000000,22869,18936,48455

Your data will likely be different, but the general trends should be similar.

Once you have collected your data, plot it using Excel. Your plot should look something like this:

figures/lab20-benchPlot.png

Submit

Make sure that you have included your Excel file in the project!

When you are done, save the project (CS201_Lab20) to a zip file by right-clicking it and choosing

Export...->Archive File

Upload the saved zip file to the Marmoset server as lab20. The server URL is

https://camel.ycp.edu:8443/