In this project, you will discover a few sorting algorithms. You will also test their efficiency through both timing how long a given sorting operation takes and counting its basic operations.
You will (at a later date) be provided with code for a number of dissimilar arrays of varying sizes to test these sorting algorithms with.
Listed below are the steps of the Radix Sort algorithm:
Starting with the lowest digit (that is, 1s place):
1. Group all elements by digit. Keep the elements order the same as the order they are added to such groups.
2. Merge all these groups in one array, from lowest digit grouping to highest
3. Repeat the procedure for the next lowest digit, until you sort by the highest most digit of any number
Here's an illustration of this algorithm in process:
Unsorted array: 170, 45, 75, 90, 802, 24, 2, 66
Sort by 1s place: 170, 90, 802, 2, 24, 45, 75, 66
Sort by 10s place: 802, 2, 24, 45, 66, 170, 75, 90
Sort by 100s place: 2, 24, 45, 66, 75, 90, 170, 802
Note that in each step of the process, any missing digit is counted as a 0.
With this algorithm in mind, do the subsequent:
1) Answer the subsequent problems:
-What is the basic operation of each the iteration of the algorithm?
-What is the number of operations which will be performed in the worst case? Average case? Best case? Comment on these results.
-What kinds of data (not just variable types) may a Radix sort be more useful for sorting than a Bubble, Selection, Insertion or Quick Sort? Why?
2) Design and prepare a function which executes the sorting algorithm and test it using the provided arrays. In addition, the function required to keep track of and print the number of basic operations performed. Time how long each sorting takes.
3) Execute these tests on the Bubble, Selection, Insertion and Quick Sort algorithms covered in the book. Again, time each sorting and keep track of the number of basic operations performed.
4) Accumulate the results of your testing in a well formatted table. Comment on the results.
Radix sort requires you to extract a single digit from an Integer. There are at least two ways to perform this operation: one involves using the division/modulus operators, the other involves converting the integer to a String.