public class CountSort {
public static void main(String[] args) {
int arr[] = {0,9,20,13,15,3,7,8,15};
System.out.println("printing an array ::");
printArray(arr);
System.out.println("Sorting for a range 0 to 20");
arr = countSort(arr);
System.out.println("Sorted array by count sort");
printArray(arr);
}
static int [] countSort(int [] arr){
int count [] = new int[21];
int sortOutput [] = new int[arr.length];
//initialize the count array to 0
for(int i=0;i<count.length;i++)
count[i]=0;
//calculate count
for(int i=0;i<arr.length;i++)
count[arr[i]]++;
//calculate incremental count
for(int i=1;i<count.length;i++)
count[i]=count[i-1]+count[i];
//fill output array as per count
for(int i=arr.length-1;i>=0;i--){
sortOutput[count[arr[i]]-1] = arr[i];
--count[arr[i]];
}
return sortOutput;
}
static void printArray(int arr[])
{
int n = arr.length;
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}
}
Output
printing an array :: 0 9 20 13 15 3 7 8 15 Sorting for a range 0 to 20 Sorted array by count sort 0 3 7 8 9 13 15 15 20