The first project involves bench marking the behavior of Java implementations of one of the following sorting algorithms, bubble sort, selection sort, insertion sort, Shell sort, merge sort, quick sort or heap sort. You must post your selection in the "Ask the Professor" conference. No more than five students may select any one algorithm.
You must write the code to perform the bench marking of the algorithm you selected. Your
program must include both an iterative and recursive version of the algorithm. You do not have
to write the sorting algorithms yourself, you may take them from some source, but you must
reference your source.
You must identify some critical operation to count that reflects the overall performance and
modify each version so that it counts that operation. In addition to counting critical operations
you must measure the actual run time in nanoseconds.
In addition, you should examine the result of each call to verify that the data has been properly
sorted to verify the correctness of the algorithm. If the array is not sorted, an exception should be
It should also randomly generate data to pass to the sorting methods. It should produce 50 data
sets for each value of n, the size of the data set and average the result of those 50 runs. The exact
same data must be used for the iterative and the recursive algorithms. It should also create 10
different sizes of data sets. Choose sizes that will clearly demonstrate the trend as n becomes
large. Be sure that the data set sizes are evenly spaced so this data can be used to generate graphs
in project 2
This project should consist of two separate programs. The first of those programs should perform
the benchmarking described above and generate two data files, one containing the results from
the iterative algorithm and the one containing the results of the recursive algorithm.