Experiment on sorting techniques in Java

Job ID: 35081120

Budget: $30 – $250 USD

I need to run a simulation experiments for various sorting techniques, evaluate their performance, draw graphs that illustrate the results and interpret the behavior of each sorting technique.

- Implementation: Implement the following sorting techniques in your favorite language (e.g., C, C++, C#,Java, etc):

Insertion sort
Selection Sort
Bubble sort
Merge sort
Quick sort

Please use your own implementation (and not an existing implementation from the web), write proper comments inline with your source code, and follow best software engineering practices.

- Data sets: craft four data sets such that two data sets are synthetic (drawn from a distribution) and two data sets that are real (research some real data sets online.) Finding the data thatis appropriate in nature and size is crucial to evaluate various techniques under different conditions.

- Run a set of simulation experiments that evaluate the following performance measures [on the y-axis] (a) run time (b) memory usage against the following parameters [on the x-axis] (a) data size, (b) degree of data sortedness (please research a measure of sortedness)

- Draw 16 (or more) graphs (4 data sets x 2 perf measures x 2 parameters), each graph has 5 curves depict the performance of the five sorting techniques. Please make sure that every point on any curve is not coming from a single experiment. Instead, it is the average of 5 runs (also record the standard deviation).

I need the source code in a zip file and a report that includes:
(a) a brief description of each sorting technique's algorithm

(b) description of the data sets

(c) 16 (or more) performance curve as described above

(d) discussion on the performance curves that interprets and describes the behavior of each sorting technique, its complexity analysis and when to use each technique.

(e) Other issues: what measure of sortedness have you decided to use.