Today, we are going to show the implementation of the Counting sort algorithm, which is the forth one from our series of tutorials on sorting algorithms. If you haven’t read the first three tutorials on BubbleSort, InsertionSort and SelectionSort, I strongly recommend that you read them, because we will reuse code that was explained there.
The application is really simple, it will just get an instance of a Sortable algorithm, which in this case will be a CountingSort object and pass some Integer and String arrays to it, but unlike the other three algorithms that are able to sort any object that implements Comparable, this algorithm only works with Integers (positive and negative values), the arrays of String will be ignored. The last part of the code is to print the sorted arrays.
public class SorterApp {
public static void main(String[] args) {
SorterApp app = new SorterApp();
app.run();
}
private void run() {
sort(new Integer[] { 2, 42, -3, 2, 4 });
sort(new Integer[] { 1, 2, 3, 4, 5 });
sort(new Integer[] { 3, 1, 5, 4, 2 });
sort(new Integer[] { 5, 4, 3, 2, 1 });
System.out.println();
sort(new String[] { "a", "b", "c", "d", "e" });
sort(new String[] { "c", "a", "e", "d", "b" });
sort(new String[] { "e", "d", "c", "b", "a" });
}
private <T extends Comparable<T>> void sort(T[] values) {
Sortable sorter = newSortable(4);
sorter.sortAscending(values);
// sorter.sortDescending(values);
Utils.printArray(values);
}
private Sortable newSortable(int sortableAlgorithm) {
switch (sortableAlgorithm) {
case 1:
return new BubbleSort();
case 2:
return new InsertionSort();
case 3:
return new SelectionSort();
case 4:
return new CountingSort();
default:
return new BubbleSort();
}
}
}
Continue reading Counting Sort Algorithm in Java