{{Sorting Algorithm}}

Measure a relative performance of sorting algorithms implementations.

Plot '''execution time vs. input sequence length''' dependencies for various implementation of sorting algorithm and different input sequence types ([[#Figures: log2( time in microseconds ) vs. log2( sequence length )|example figures]]). 

Consider three type of input sequences:
:* &nbsp; ones: sequence of all ''1'''s. &nbsp; Example: {1, 1, 1, 1, 1}
:* &nbsp; range: ascending sequence, i.e. already sorted. &nbsp; Example: {1, 2, 3, 10, 15}
:* &nbsp; shuffled range: sequence with elements randomly distributed. &nbsp; Example: {5, 3, 9, 6, 8}


Consider at least two different sorting functions (different algorithms or/and different implementation of the same algorithm).

For example, consider [[Bubble Sort]], [[Insertion sort]], [[Quicksort]] or/and implementations of Quicksort with different pivot selection mechanisms. &nbsp; Where possible, use existing implementations.

Preliminary subtask:
:* &nbsp; [[Bubble Sort]], [[Insertion sort]], [[Quicksort]], [[Radix sort]], [[Shell sort]]
:* &nbsp; [[Query Performance]]
:* &nbsp; [[Write float arrays to a text file]]
:* &nbsp; [[Plot x, y arrays]]
:* &nbsp; [[Polynomial Fitting]]


General steps:
:# &nbsp; Define sorting routines to be considered.
:# &nbsp; Define appropriate sequence generators and write timings.
:# &nbsp; Plot timings.
:# &nbsp; What conclusions about relative performance of the sorting routines could be made based on the plots?
<br><br>

