Categories
Algorithm Algorithms & Design Sort

Count Sort


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 


Leave a comment

Design a site like this with WordPress.com
Get started